使用CLOB值更新oracle中的clob列

时间:2013-05-02 13:11:58

标签: java sql oracle hibernate

我想更新一个列是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 string;

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。请帮助。

1 个答案:

答案 0 :(得分:1)

Oracle正在解释这个SQL

SET TEXTAREA4=oracle.sql.CLOB@77df8d
由于 @ 符号,

作为数据库链接,但无论如何都无关紧要,因为您在此处所做的只是尝试将列的值设置为 toString < / strong>的CLOB,这不是你想要的。

您的代码示例并未真正概述问题所在,因为该方法只是执行传递的SQL的一般实用程序,但我建议使用以下两种方法之一:

  1. 转到GriffeyDog的建议并切换到使用PreparedStatement,您可以使用PreparedStatement.setClob绑定CLOB。
  2. 如果您使用的是Oracle 11g + JDBC驱动程序,则可以使用简单的Java字符串设置CLOB列的值。