web-dev-qa-db-ja.com

javaでBlobをStringに、StringをBlobに変換する方法

私は使用して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でBlobStringに、StringBlobに変換するのを手伝ってくれる人はいますか?

22
Md. Suzon

これを試してください(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型のようです

8

これを使用して、文字列をBlobに変換します。ここで、connectionはdbオブジェクトへの接続です。

    String strContent = s;
    byte[] byteConent = strContent.getBytes();
    Blob blob = connection.createBlob();//Where connection is the connection to db object. 
    blob.setBytes(1, byteContent);

JavaでBlobをStringに変換するには:

byte[] bytes = baos.toByteArray();//Convert into Byte array
String blobString = new String(bytes);//Convert Byte Array into String
0
Maverick

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

 //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();
0
Optional