2012-08-27 33 views
8

Tôi đang cố gắng đọc một chiếc áo choàng từ postgreSQL DB, thay đổi nó và viết lại.Chuỗi đến CLOB với postgreSQL

tôi đã có thể đọc clob sử dụng thành công đoạn mã sau:

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

Nhưng khi tôi đang cố gắng để tạo ra một clob mới với các dữ liệu mới sử dụng:

Clob newClob = connection.createClob(); 

tôi m nhận được lỗi sau:

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

Hơn nữa, nếu tôi cố gắng chỉnh sửa dấu vết đã tìm nạp, sử dụng:

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

Tôi nhận được lỗi sau:

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

Bất kỳ ý tưởng?

Cập nhật: đây là định nghĩa bảng

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

Cảm ơn

Trả lời

5

Không cần phải sử dụng getClob().

ResultSet.getString()setString() công việc hoàn toàn tốt đẹp trên text cột (PostgreSQL không có một datatype clob vì vậy tôi giả sử bạn đang sử dụng text)

+0

Tôi đang sử dụng văn bản. Khi tôi cố gắng sử dụng getString tôi lấy lại một số mà tôi không hiểu ý nghĩa của nó (có thể là chiều dài dữ liệu thực tế?). Chỉ khi tôi làm getClob và nhìn vào dòng ký tự của nó (getCharacterStream), tôi nhận được toàn bộ XML được lưu trong DB. –

+0

@BenBracha: Sau đó, bạn không hiển thị cho chúng tôi mọi thứ. 'getString()' chắc chắn hoạt động tốt với 'text'columns. Vui lòng cho chúng tôi biết định nghĩa bảng của bạn (chỉnh sửa câu hỏi của bạn). –

+0

Đã cập nhật ở trên. Tôi bây giờ cũng thấy rằng org.postgresql.jdbc3.AbstractJdbc3Clob được sử dụng bởi ứng dụng của tôi không thực hiện tất cả các thiết lập * cho Clob. Tôi nên làm gì? Ngoài ra tôi nên thêm chúng tôi sử dụng Hibernate và đối tượng phù hợp cho bảng này có trường column_text được đánh dấu bằng @Lob –

Các vấn đề liên quan