我要更新的列是CLOB类型,方法如下;
public boolean formVeriGuncelleSil(String sql) throws VeritabaniException {
try {
Session session = getSessionFactory().getCurrentSession();
SQLQuery query = session.createSQLQuery(sql);
query.executeUpdate();
return true;
} catch (RuntimeException e) {
throw new VeritabaniException(e, VERIGUNCELLEMEEXCEPTION, "FID_01_02_01");
}
}
sql字符串;
UPDATE K1FORM_LISTGRID3 SET TEXTAREA4=oracle.sql.CLOB@77df8d, TEXTT5='ANAFORM',ANATABLO='1', OLUSTURAN_KULLANICI='184' WHERE ID=1
我得到“ java.sql.SQLSyntaxErrorException:ORA-01729:数据库链接名称预期”错误
我该如何解决这个SQL。请帮助。
最佳答案
Oracle正在解释此SQL
SET TEXTAREA4=oracle.sql.CLOB@77df8d
由于使用@符号作为数据库链接,但是无论如何都没有关系,因为您在此处所做的只是尝试将列的值设置为CLOB的toString,这不是您想要的。
您的代码示例并未真正概述问题出在哪里,因为该方法只是执行传递的SQL的通用实用程序,但我建议使用以下两种方法之一:
遵循GriffeyDog的建议,并切换到使用PreparedStatement,在其中使用PreparedStatement.setClob绑定CLOB。
如果使用的是Oracle 11g + JDBC驱动程序,则可以使用简单的Java字符串设置CLOB列的值。
关于java - 使用CLOB值更新Oracle中的Clob列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16338929/