Получение значения BLOB из базы данных с использованием OutputStreamBlob.class файла jar ojdbc

В тонком приложении jdbc, если мы хотим получить фотографию (BLOB) из базы данных, мы получаем объект входного потока с помощью

InputStream is= rs.getBinaryStream(columnIndex);

который внутренне создает объект

oracle.jdbc.driver.OracleBlobInputStream 

но в то время как с выходным потоком мы должны явно создать объект выходного потока, например

OutputStream os=new FileOutputStream("путь к папке");

Почему мы не можем использовать oracle.jdbc.driver.OracleBlobOutputStream.class файла ojdbc6.jar для получения объекта ОС.

Почему мы должны создавать явно. Надеюсь, вы, ребята, можете мне помочь, заранее спасибо


person Ramesh Raj    schedule 18.08.2015    source источник
comment
Что вы имеете в виду, вы должны создать явный поток вывода? Входной поток используется для чтения данных (фото), так зачем вам выходной поток?   -  person Andreas    schedule 18.08.2015
comment
я создаю объект выходного потока, чтобы указать на папку, в которую я хочу записать данные (фото) (назначение) из входного потока (источника), используя буфер в качестве посредника   -  person Ramesh Raj    schedule 18.08.2015


Ответы (1)


ResultSet предоставляет вам методы для получения значений из SQL-запроса. Для Blob вы можете получить эти данные в 3 формах:

  • Байтовый массив (getBytes)
  • Входной поток (getBinaryStream)
  • Объект большого двоичного объекта (getBlob)

Что вы будете делать с этими данными, зависит только от вас. Если вы хотите развернуться и сохранить эти данные в файл, вы должны сделать это с помощью FileOutputStream и записать данные в этот поток.

Интерфейс ResultSet не может реализовать методы отправки данных во все возможные места. Что делать, если вы хотите использовать фотографию в приложении Swing? Или отправить его на сервер, используя FTP, WebDAV, HTTP, ... Вы действительно думаете, что это должно быть обязанностью ResultSet?

person Andreas    schedule 18.08.2015
comment
спасибо, Андреас, за то, что развеял мои сомнения, поскольку ResultSet на это не способен, поэтому мы создаем объект FileOutputStream для отправки файлов по назначению. - person Ramesh Raj; 18.08.2015
comment
@RameshRaj Пожалуйста. Пожалуйста, примите это как ответ, чтобы другие могли легко его увидеть. - person Andreas; 18.08.2015