在BLOB Oracle中存储byte []

时间:2013-11-25 08:13:14

标签: java oracle jdbc oracle11g

我正在执行以下操作,将其插入 BLOB Oracle 11g。

图像存储在从XML中提取的字符串中 Base64编码

String str = "xyz...."
byte[] bytes = str.getBytes();
InputStream is = new ByteArrayInputStream(bytes);

PreparedStatement prepStmt = dbCon.prepareStatement("insert into Table(INDEX,RESPONSE_IMAGE) values(?,?);
prepStmt.setString(1, action.getIndex());
prepStmt.setBinaryStream(2, is, str.length());

我认为问题是图像的字节长度,因为当我得到字符串的长度()时,它大约是 200,000字节

当我在字符串上执行 subString(3000)时,它很容易保存在BLOB列中

那么问题究竟在哪里?

  1. 图片长度是否过长?
  2. 或者我应该选择Oracle的任何其他数据类型?
  3. 我读过BLOB可以保存多达4GB的数据然后为什么不能保存?

1 个答案:

答案 0 :(得分:0)

将Blobs与JDBC一起使用的Oracle教程是here

相关部分:

Clob myClob = this.con.createClob();
Writer clobWriter = myClob.setCharacterStream(1);

与:

一起
  

添加和检索BLOB SQL对象与添加和检索CLOB SQL对象类似。使用Blob.setBinaryStream方法检索OutputStream对象以写入Blob Java对象(称为方法)所代表的BLOB SQL值。