使用setString()从String转换为Clob不起作用

我正在尝试将String转换为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: org.apache.derby.impl.jdbc.EmbedClob@1f5483e clob after setting: org.apache.derby.impl.jdbc.EmbedClob@1f5483e clob back to string: org.apache.derby.impl.jdbc.EmbedClob@1f5483e 

我看起来到处都说使用setString方法,我不知道为什么这对我不起作用。

您不需要中间Clob实例,只需在PreparedStatement上使用setString()

 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(); 

不确定它是否适用于德比,但对于hibernate,你可以使用:

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