[英]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();
}
(請注意,為簡單起見,我沒有包含用於關閉Connection
, PreparedStatement
和InputStream
任何必需的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.