2013-11-25 3 views
0

Я делаю следующее, чтобы вставить его в BLOB Oracle 11g.Хранить байт [] в BLOB 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 легко.

ТАК, где проблема на самом деле?

  1. Длина изображения слишком длинная?
  2. или я должен использовать любой другой тип данных Oracle?

Я прочитал, что BLOB может сэкономить до 4 ГБ данных, тогда почему бы и нет?

ответ

0

Учебник Oracle по использованию Blobs с JDBC - here.

Соответствующая часть:

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

Вместе с:

Добавление и извлечение объектов BLOB SQL похож на добавление и извлечение объектов CLOB SQL. Используйте метод Blob.setBinaryStream для извлечения объекта OutputStream для записи значения BLOB SQL, которое представляет объект Java Blob (который называется методом).

+0

, следуя вашему пути, я получаю следующее исключение: Clob myClob = this.con.createClob(); java.lang.AbstractMethodError at org.apache.tomcat.dbcp.dbcp.DelegatingConnection.createClob (DelegatingConnection.java:582) –

Смежные вопросы