2013-09-22 74 views
4

我想將字符串轉換爲Clob以存儲在數據庫中。我有以下代碼:使用setString()不工作從字符串轉換爲Clob

Clob clob = connection.createClob(); 
System.out.println("clob before setting: " + clob); 
clob.setString(1,"Test string"); 
System.out.println("clob after setting: " + clob); 
System.out.println("clob back to string: " + clob.toString()); 

當我運行此Clob中的不被設置,輸出如下:

clob before setting: [email protected] 
clob after setting: [email protected] 
clob back to string: [email protected] 

我到處看看錶示使用了setString方法,我沒有想法爲什麼這不適合我。

+0

你可以簡單地在'PreparedStatement'上使用'setString()'。不需要創建中間的'Clob'實例。 –

+1

@BugalugsNash:你錯誤地認爲Clob.toString()返回Clob內容。事實並非如此。因此,您的調試輸出不能幫助診斷問題。我不確定你有沒有問題。 – Codo

+0

@a_horse_with_no_name我試圖插入一個表中有一個數據類型爲Clob的表,因此我使用了一個帶有變量'?'的準備語句,然後嘗試將Clob綁定到該變量。我不明白你的建議,但我認爲它不適用於我。 –

回答

6

你不需要中間Clob情況下,只需要使用setString()PreparedStatement

PreparedStatement stmt = connection.prepareStatement("insert into clob_table (id, clob_column) values (?,?)"; 
stmt.setInt(1, 42); 
stmt.setString(2, "This is the CLOB"); 
stmt.executeUpdate(); 
connection.commit(); 
2

不知道它是否適合德比,但對於休眠您可以使用:

public Clob createClob(org.hibernate.Session s, String text) { 
    return s.getLobHelper().createClob(text); 
}