java - Blob 数据部分插入数据库

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

最佳答案

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

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

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

关于java - Blob 数据部分插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12806548/

相关文章:

java - ORA-01460 : unimplemented or unreasonable conversion requested using Hibernate @Lob

sql - 是否可以防止 ORDS 转义我的 GeoJSON?

sql - 将 .pdf 存储在 SQL 或路径中?

mysql - MySQL 中的图像

java - 暂停 kafka 在响应式(Reactive) Kafka 中读取

java - 在java中读取XML数据库列

java - MapReduce分布式 reducer

java - JPA双向@ManyToMany关系: Assignment causes two inserts

Oracle sqlplus 行大小

database - vb 6.0 插入图片位图到ms access数据库