2012-08-27 89 views
8

我試圖讀取和PostgreSQL數據庫一個CLOB,改變它,並把它寫回。字符串爲CLOB在PostgreSQL

我能夠讀取CLOB成功使用下面的代碼:

PreparedStatement statement = connection.prepareStatement("SELECT clob_column from data where id = 1"); 
ResultSet executeQuery = statement.executeQuery(); 
executeQuery.next() 
Clob fetchedClob = executeQuery.getClob("clob_column"); 

但是,當我試圖創建新數據的新CLOB使用:

Clob newClob = connection.createClob(); 

我m得到以下錯誤:

java.lang.AbstractMethodError: com.mchange.v2.c3p0.impl.NewProxyConnection.createClob()Ljava/sql/Clob; 

此外,如果我試着編輯提取的clob,使用:

fetchedClob.setString(0, "new string"); 

,我發現了以下錯誤:

Method org.postgresql.jdbc4.Jdbc4Clob.setString(long,str) is not yet implemented. 

任何想法?

更新:這裏是表定義

CREATE TABLE data ( id bigint NOT NULL, clob_column text,);

感謝

回答

5

無需使用getClob()

ResultSet.getString()setString()工作在text列完美的罰款(PostgreSQL沒有一個clob數據類型,所以我假設你使用text

+0

我使用文本。 當我嘗試使用getString時,我找回了一個我不明白其含義的數字(也許是實際的數據長度?)。 只有當我getClob並查看其字符流(getCharacterStream)時,我才能得到保存在數據庫中的完整XML。 –

+0

@BenBracha:那麼你沒有向我們展示一切。 'getString()''''''text'columns可以正常工作。請向我們展示您的表格定義(編輯您的問題)。 –

+0

已更新上面。 我現在也看到它使用我的應用程序沒有實現全部設置爲*該Clob中org.postgresql.jdbc3.AbstractJdbc3Clob。 我該怎麼辦? 另外我要補充我們使用Hibernate和該表的匹配實體有它打上@Lob –