Подтвердить что ты не робот

Как преобразовать Blob в String и String в Blob в java

Я пытаюсь получить строку из типа данных BLOB с помощью

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

Он работает нормально, но когда я собираюсь преобразовать String в Blob и попытаться вставить в базу данных, то ничего не вставлять в базу данных. Я использовал ниже код для преобразования String в Blob:

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

Может ли кто-нибудь помочь мне преобразовать Blob в String и String в Blob в Java?

4b9b3361

Ответ 1

попробуйте это (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 type

Ответ 2

Используйте это, чтобы преобразовать String в Blob. Если соединение является подключением к объекту db.

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

Ответ 3

Как вы устанавливаете 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();