web-dev-qa-db-fra.com

Comment convertir Blob en String et String en Blob en java

J'essaie d'obtenir une chaîne de type de données BLOB en utilisant 

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

Cela fonctionne bien, mais lorsque je vais convertir String en Blob et essayer d’insérer dans une base de données, rien ne s’insère dans la base de données. J'ai utilisé le code ci-dessous pour convertir String en Blob:

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

Quelqu'un peut-il m'aider sur le point de convertir Blob en String et String en Blob en Java?

20
Md. Suzon

essayez ceci (a2 est 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();

cela peut fonctionner même sans BLOB, le pilote transformera automatiquement les types:

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

De plus, si vous travaillez avec du texte, CLOB semble être un type de col plus naturel.

7
Evgeniy Dorofeev

Utilisez ceci pour convertir String en Blob. Où connection est la connexion à l'objet db. 

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

Comment définissez-vous blob sur DB? Tu devrais faire:

 //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