blob数据部分插入数据库中

时间:2012-10-09 18:54:03

标签: java oracle blob

当我将blob数据插入Oracle数据库时,它被部分插入。我使用以下代码进行插入。

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 图像来检查数据是否已插入,有时我得到部分图像。其余图像是灰色的。大部分时间我都能完美地获得完整的图像。这部分插入的原因是什么?

1 个答案:

答案 0 :(得分:1)

您使用默认编码将字符串的字节存储在BLOB中。这至少在以下一种方式中是错误的:

  • 如果您要存储字符数据,请使用CLOB
  • 如果您要存储二进制数据,请不要将其放入字符串中。

既然你说你正在处理JPEG,我会说字符串转换是你遇到问题的地方。试图在Java String(处理字符)中存储一堆字节然后将其转换回字节只是一个坏主意。使用byte[]