25

を使用して BLOB データ型から文字列を取得しようとしています

Blob blob = rs.getBlob(cloumnName[i]);
byte[] bdata = blob.getBytes(1, (int) blob.length());
String s = new String(bdata);

正常に動作していますが、データベースに変換StringBlobて挿入しようとすると、データベースに何も挿入されません。String を Blob に変換するために以下のコードを使用しました。

String value = (s);
byte[] buff = value.getBytes();
Blob blob = new SerialBlob(buff);

JavaでのBlobtoStringおよびStringtoへの変換を手伝ってくれる人はいますか?Blob

4

6 に答える 6

8

これを試してください(a2はBLOB colです)

PreparedStatement ps1 = conn.prepareStatement("update t1 set a2=? where id=1");
Blob blob = conn.createBlob();
blob.setBytes(1, str.getBytes());
ps1.setBlob(1, blob);
ps1.executeUpdate();

BLOB がなくても機能する可能性があります。ドライバーは型を自動的に変換します。

   ps1.setBytes(1, str.getBytes);
   ps1.setString(1, str);

さらに、テキスト CLOB を扱う場合は、より自然な col タイプのようです

于 2013-07-01T09:06:45.117 に答える
0

blob を DB にどのように設定していますか? やったほうがいい:

 //imagine u have a a prepared statement like:
 PreparedStatement ps = conn.prepareStatement("INSERT INTO table VALUES (?)");
 String blobString= "This is the string u want to convert to Blob";
oracle.sql.BLOB myBlob = oracle.sql.BLOB.createTemporary(conn, false,oracle.sql.BLOB.DURATION_SESSION);
 byte[] buff = blobString.getBytes();
 myBlob.putBytes(1,buff);
 ps.setBlob(1, myBlob);
 ps.executeUpdate();
于 2013-07-01T08:53:51.307 に答える
0

そして、これが私の解決策です。それは常に私にとってうまくいきます

StringBuffer buf = new StringBuffer();
String temp;
BufferedReader bufReader = new BufferedReader(new InputStreamReader(myBlob.getBinaryStream()));
    while ((temp=bufReader.readLine())!=null) {
        bufappend(temp);
    }
于 2021-01-03T16:33:54.377 に答える