2015-09-25 3 views
1

У меня есть проект, в котором мне нужно извлечь некоторые изображения в формате BLOB в виде строки из базы данных ORACLE, чтобы отправить ее через JSON. Я использую Eclipse Java EE IDE.правильный способ извлечения изображения (BLOB) из ORACLE

Версия: Mars Release (4.5.0)
Сложение ID: 20150621-1200

Будет ли это правильный способ для извлечения данных BLOB как строки?

 String query = "SELECT operation, c_book, x_book, x_text1, x_text2, x_text3, x_text4," 
          + "UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(img_logo,32670,1))FROM " 
          + dataBaseConnectionData.getDB_SHCHEMA() + "."+ dataBaseConnectionData.getDB_TABLE_COLA() 
          + " WHERE status = 'P' OR status = 'N' OR status = 'E'" 
          + " ORDER BY c_book"; 
+1

Вы пытались выполнить запрос? –

ответ

0

Есть 3 способа получения данных BLOB с использованием JDBC:

Blob blob = rs.getBlob("img_logo") 
InputStream stream = rs.getBinaryStream("img_logo") 
byte[] bytes = rs.getBytes("img_logo") 

Если капля имеет ограниченный размер, что логотип будет, третий вариант является самым простым в использовании.

Затем вам необходимо преобразовать в строку, а это значит, что вам нужно знать, какая кодировка была использована для преобразования исходного текста в двоичный файл. Наиболее консервативный выбор был бы US-ASCII, так:

String text = new String(bytes, StandardCharsets.US_ASCII) 

Конечно, это предполагает, что двоичные данные текста, но это логотип, и это не звучит как текстовое значение, так что вы можете иметь в виду, что вы хотите кодировать двоичные данные для встраивания в структуру JSON, которые должны быть декодированы обратно в двоичный файл на другом конце.

Для этого вам нужно будет выбрать кодировку. Два главных варианта: HEX и BASE64, где HEX удваивает размер (две шестнадцатеричные цифры на каждый байт), а BASE64 добавит 33% (4 символа на 3 байта).

Для HEX см How to convert a byte array to a hex string in Java?
Для BASE64 см How do I convert a byte array to Base64 in Java?, или использовать новый Base64 класс (Java 8).

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