1

blobOracle データベースにデータを挿入すると、部分的に挿入されます。挿入には次のコードを使用しています。

oracle.sql.BLOB newBlob =oracle.sql.BLOB.createTemporary(conn, false, oracle.sql.BLOB.DURATION_SESSION);
newBlob.putBytes(1, str.getBytes());
ps.setBlob(1, newBlob);

データをクエリしてjpeg画像に変換することで、データが挿入されたかどうかを確認しましたが、部分的な画像が表示されることがあります。画像の残りの部分は灰色です。ほとんどの場合、完全なイメージを完全に取得しています。この部分的な挿入の理由は何ですか?

4

1 に答える 1

1

デフォルトのエンコーディングを使用して、文字列のバイトをBLOBに格納しています。これは、次の少なくとも1つの点で間違っています。

  • 文字データを格納する場合は、CLOBを使用してください
  • バイナリデータを保存する場合は、文字列に入れないでください。

次に、JPEGを扱っていると言うので、文字列変換で問題が発生していると言えます。大量のバイトをJava文字列(文字を処理する)に格納してから、それをバイトに戻すことは、悪い考えです。を使用しbyte[]ます。

于 2012-10-09T19:21:37.350 に答える