2011-03-08 50 views
0

我想上傳多個對象到我的oracle數據庫使用java如何通過java在oracle數據庫中上傳對象

我的對象包括{DOC,DOCX,PPT,PPTX,PDF}文件。

如何在Oracle數據庫中上傳我的對象並從數據庫中檢索它。

我也有興趣瞭解更多關於「我如何批量插入Java數據庫中的對象列表?」但我認爲這個問題以前回答過。如果您有任何新的或有趣的資源,請與我分享,請...

+1

什麼樣的物體? –

+1

您使用某種ORM,Oracle對象還是要在數據庫中保存實例? –

+1

您是否想問,「_如何從Java批量插入Oracle數據庫中的對象列表?_」 – Nishant

回答

3

插入到數據庫:

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; 
} 

閱讀來自DB:

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

我沒有oracleResultSet,在那裏我可以找到這個包? – Amir

+0

Oracle JDBC驅動程序:http://mvnrepository.com/artifact/ojdbc/ojdbc –

0

如果你是

    在Linux和數據庫上運行的
  1. 版本是11gR2並且您有
  2. 在它創建了一個DBFS,你有
  3. 安裝它使用dbfs_client

您可以訪問文件系統作爲一個普通的網絡文件系統。這樣做是使用常規文件系統io將非結構化數據存儲在數據庫中的最簡單方法。 dbfs_client使用保險絲翻譯了這些調用。如果需要,您可以稍後創建與其他數據的關係。

羅納德。

+0

我在Windows XP上運行:( – Amir

+0

在這種情況下,你可能能夠使用smb重新安裝fs。您仍然需要將dbfs掛載到某個Linux應用程序/文件服務器上,並將其導出到您的Windows機器。 –