2013-03-03 104 views
0

我想給兩個API函數來存儲文件在一個DB - 一個接受byte[](或一個InputStream)和另一個接受String。我不知道如何實現這樣一個API。如何將文本和二進制文件存儲在hsqldb數據庫中?

我看到如下選項:

  1. 定義兩個領域 - 一個BLOB的二進制文件,另一個的CLOB - 爲文本文件。然後,我可以使用PreparedStatement.setBytes(或PreparedStatement.setBinaryStream)作爲BLOB,而PreparedStatement.setString作爲CLOB。我不喜歡有兩個領域。
  2. 使用String.getBytes()將給定String轉換爲byte[],從而回到二進制情況。我不喜歡將String轉換爲byte[]

我想知道是否有一個解決方案,不需要兩個字段,並避免額外的字節緩衝區。

回答

0

Java String和Clob是Unicode,並以雙字節字符存儲。因此,如果要將這些值存儲在byte []或Blob中,則需要進行一些轉換。

因此,最好的方法是使用兩個單獨的字段,一個用於BLOB,另一個用於CLOB值。

相關問題