Как загрузить объект в базу данных Oracle по Java - PullRequest
0 голосов
/ 08 марта 2011

Я хочу загрузить несколько объектов в мою базу данных Oracle.

Мои объекты включали файлы {DOC, DOCX, PPT, PPTX, PDF}.

Как я могу загрузить свои объекты в базу данных Oracle и извлечь их из базы.

также мне интересно узнать больше о том, «Как я могу пакетно вставить список объектов в базу данных Oracle из Java?» но я думаю, что на этот вопрос ответили раньше. Если у вас есть новый или интересный ресурс, пожалуйста, поделитесь со мной, пожалуйста ...

Ответы [ 2 ]

3 голосов
/ 08 марта 2011

Вставить в БД:

int primaryKeyId = getNextPrimaryKeyId();
PreparedStatement stmt1 = conn.prepareStatement(" insert into docTable values (?, ?, empty_blob()) ");
stmt1.setInt(1, primaryKeyId );
stmt1.setString(2, getDocumentTitle());
stmt1.executeUpdate();

PreparedStatement stmt2 = conn.prepareStatement(" select doc from docTable where id = ? for update ");
stmt2.setInt(1, primaryKeyId);
stmt2.execute();

OracleResultSet rset = (OracleResultSet)stmt2.getResultSet();
if (rset.next()) {
  BLOB document = rset.getBLOB("doc");
  document.trim(0);
  OutputStream os = document.getBinaryOutputStream();
  os.write(getDocumentToBeWrittenToDb());
  os.flush;
  os.close;
}

Чтение из БД:

PreparedStatement stmt = conn.prepareStatement(" select title, doc from docTable where id = ?");
stmt.setInt(1, primaryKeyId);
stmt.execute();

BLOB document;
OracleResultSet rset = (OracleResultSet)stmt.getResultSet();

if (rset.next())
{
  ByteArrayOutputStream baos = null;
  InputStream is = null;
  try
  {
    BLOB document = rset.getBLOB("document");
    String title = rset.getString("title");
    is = document.getBinaryStream();
    baos = new ByteArrayOutputStream();
    byte[] data = new byte[2048];
    int len;
    while ((len = is.read(data)) != -1)
    {
      baos.write(data, 0, len);
    }
  } finally
  {
    if (null != baos) baos.close();
    if (null != is) is.close();
  }

  return baos.toByteArray();
}
0 голосов
/ 08 марта 2011

Если вы

  1. работает в Linux и базе данных
  2. версия 11gR2 и у вас есть
  3. создал в нем dbfs и у вас есть
  4. смонтировал его, используя dbfs_client

вы можете получить доступ к файловой системе как к обычной сетевой файловой системе. Это самый простой способ хранения неструктурированных данных в базе данных с использованием обычной файловой системы io. Dbfs_client перевел вызовы, используя fuse. При необходимости вы можете создать отношения с другими данными позже.

Ronald.

...