2013-11-25 48 views
0

我正在做以下操作將它插入到BLOB Oracle 11g中。在BLOB中存儲byte [] Oracle

圖像位於Base64編碼存儲在從XML中提取的字符串中。

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

我認爲問題是圖像的字節長度,因爲當我得到的長度()的字符串它的周圍200000字節

當我做串(3000)在它被輕易保存在BLOB列字符串

SO究竟是哪裏的問題?

  1. 圖像的長度是否太長?
  2. 或者我應該去任何其他數據類型的Oracle?

我讀到BLOB可以保存高達4GB的數據,那麼爲什麼不是我的?

回答

0

使用Blob和JDBC的Oracle教程是here

相關部分:

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

連同:

增加和獲取BLOB SQL對象是類似於添加和檢索CLOB SQL對象。使用Blob.setBinaryStream方法檢索OutputStream對象以編寫Blob Java對象(稱爲該方法)所表示的BLOB SQL值。

+0

通過以下方式,我得到以下例外 Clob myClob = this.con.createClob(); java.lang.AbstractMethodError at org.apache.tomcat.dbcp.dbcp.DelegatingConnection.createClob(DelegatingConnection.java:582) –