簡體   English   中英

如何將zip文件移動到Java中的blob列?

[英]How do I move zip file to blob column in Java?

我有一個Java程序,該程序創建許多xml文件,然后將它們壓縮並保存到文件系統中。 稍后在程序中,我要將相同的zip文件放入oracle數據庫的blob列中。 問題是我不確定該怎么做。 我不需要讀取數據或對數據做任何事情,只需將其移至數據庫以進行持久的中央存儲即可。

謝謝!

有幾種方法可以執行此操作,但是PreparedStatement.setBinaryStream可能是最好的方法。

public void saveFileToDatabase(File file) {
  InputStream inputStream = new FileInputStream(file);

  Connection conn = ...;
  PreparedStatement pS = conn.prepareStatement(...);
  ...
  pS.setBinaryStream(index, inputStream, (int) file.length());
  ...
  pS.executeUpdate();
}

(請注意,為簡單起見,我沒有包含用於關閉ConnectionPreparedStatementInputStream任何必需的try / catch東西,但是您需要這樣做。)

這樣,數據將從文件流傳輸到數據庫,而不必一次全部加載到內存中。

我認為您正在尋找使用setBytes()方法:

因此,代表正文的是字節流的電子郵件表的示例如下所示:

      PreparedStatement ps = con.prepareStatement(
        "INSERT INTO Image (ID, Subject, Body) VALUES (2,?,?)");
      ps.setString(1, subject);
      byte[] bodyIn = {(byte)0xC9, (byte)0xCB, (byte)0xBB,
        (byte)0xCC, (byte)0xCE, (byte)0xB9,
        (byte)0xC8, (byte)0xCA, (byte)0xBC,
        (byte)0xCC, (byte)0xCE, (byte)0xB9,
        (byte)0xC9, (byte)0xCB, (byte)0xBB};
      ps.setBytes(2, bodyIn);
      int count = ps.executeUpdate();
      ps.close();

我假設您可以輕松地將壓縮的XML對象的調用getBytes()轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM