2013-07-01 11 views
19

私はBLOBデータ型から文字列を取得しようとしているのBLOBにStringとStringにブロブを変換する方法データベースに挿入しようとすると、データベースに何も挿入されません。私はブロブに文字列を変換するためのコードの下に使用しました:それが正常に動作しているが、私は<code>Blob</code>に<code>String</code>を変換するつもりだときと</p> <pre><code>Blob blob = rs.getBlob(cloumnName[i]); byte[] bdata = blob.getBytes(1, (int) blob.length()); String s = new String(bdata); </code></pre> <p>を使用したJava

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

誰もがJavaでBlobStringStringBlobを変換するのに約私を助けることができますか?

+1

まず、正しい用語を使用するようにする必要があります。それはブログではなく、ブロブです。正しい名前を使用すると、Web検索でさらに多くのことが得られます。第2に、ブロブは*テキスト*データではなく、バイナリ*データ用です。理想的には、テキストデータを最初に使用しないでください。テキストデータをバイナリデータに変換するときは、エンコード(たとえば、UTF-8)を指定する必要があります。 –

答えて

0

どのようにblobを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(); 
+2

まず第一に、彼はOracle RDMSを使用しているとOPは規定しませんでした。彼がいない場合、このコードはコンパイルされません。 –

1

使用。ここで、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); 
6

それもBLOBなしで動作することがあり

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(); 

、ドライバが自動的に種類を変えていく(a2がBLOBのCOLである)、これを試してみてください。

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

ほかにテキストCLOBで作業している場合と思われますより自然なcol型になるようにする

関連する問題

 関連する問題