2012-08-27 25 views
8

PostgreSQL DB'den bir clob okumaya, değiştirmeye ve geri yazmaya çalışıyorum.PostgreSQL ile CLOB için dize

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

Ama yeni verilerle yeni bir clob oluşturmak çalışıyorum zaman kullanarak: Ben

Clob newClob = connection.createClob(); 

başarıyla aşağıdaki kodu kullanarak clob okuyabiliyordu Ben getirilen clob düzenlemek için sadece denerseniz kullanarak, Ayrıca

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

: m aşağıdaki hatayı alıyorum

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

aşağıdaki hatayı alıyorum:

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

bir fikrin?

Güncelleme: Burada tablo çözünürlüklü

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

Teşekkür

cevap

5

getClob() kullanmak yok ihtiyacıdır. text sütunlarda mükemmel iyi

ResultSet.getString() ve setString() eser ben metin kullanıyorum

+0

(PostgreSQL o yüzden text kullandığınız varsayılmaktadır bir clob veri türü yoktur). getString'i kullanmaya çalıştığımda, anlamını anlamadığım bir sayıya geri dönüyorum (belki gerçek veri uzunluğu?). Sadece benClob alıp karakter akışına baktığımda (getCharacterStream) DB'ye kaydedilen tam XML'i elde ediyorum. –

+0

@BenBracha: O zaman bize her şeyi göstermiyorsunuz. 'getString()' kesinlikle 'text'columns ile çalışır. Lütfen tablo tanımınızı bize gösterin (sorunuzu düzenleyin). –

+0

Yukarıda güncellendi. Şimdi, uygulamam tarafından kullanılan org.postgresql.jdbc3.AbstractJdbc3Clob'nin Clob için tüm seti * uygulanmadığını da görüyorum. Ne yapmalıyım? Ayrıca Hibernate kullandığımızı eklemeliyiz ve bu tablonun eşleşen varlığı @Lob –