Хранение объектов (файлов документов) в SQL с использованием JDBC - PullRequest
0 голосов
/ 17 марта 2012

У меня есть форма JSF, куда пользователь загружает данные. Теперь мне нужно сохранить загруженный файл (может быть pdf, doc, xls и т. Д.) В базу данных. Теперь, конечно, этот файл будет загружен позже рецензентами. Есть идеи, как лучше всего это сделать? Сериализация? и если да, то где конкретно я должен искать?

Я видел, что большинство сериализаций имеют дело с созданными пользователем объектами (с которыми я знаком), такими как объекты сотрудников, здания и т. Д. Но я не знаю, как представить файл документа как объект. Как в том, что передать inputReader для получения двоичной строки ...

Спасибо,

Ответы [ 2 ]

1 голос
/ 17 марта 2012

Чтобы вставить двоичный документ в базу данных, вам нужна таблица со столбцом типа BLOB (большой двоичный объект).

Скелет написать:

 File f = new File( "your.doc")
 FileInputStream   fis   = new FileInputStream( );
 PreparedStatement pstmt = dbCon.prepareStatement("insert into docs(doc) values(?)" );
 pstmt.setBinaryStream( 1, fis, (int) l.length() );
 pstmt.executeUpdate();
 pstmt.close();

для чтения из БД:

  Statement  st    = dbCon.createStatement();
  ResultSet  rs    = st.executeQuery("select doc from docs where ..." );
  if( rs.next() )
  {
    InputStream      is  = rs.getBinaryStream( "doc" );
    FileOutputStream fos = new FileOutputStream( "filename" );
    // copy is to fos

  }
  rs.close();
  st.close();
1 голос
/ 17 марта 2012

Здесь вообще нет необходимости в сериализации - файл - это (упрощенно) просто имя и данные внутри него.Поэтому вам просто нужно поле имени типа VARCHAR (или что-то еще) и поля данных типа IMAGE или любого типа, который ваша база данных использует для больших двоичных объектов.

Вы можете использовать PreparedStatement.setBlob (илипотенциально PreparedStatement.setBinaryStream; я с готовностью признаю, что не уверен в различиях) для загрузки данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...