0

我想更新一列是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。请帮忙。

4

1 回答 1

1

Oracle 正在解释此 SQL

SET TEXTAREA4=oracle.sql.CLOB@77df8d

因为@符号作为数据库链接,但无论如何都没关系,因为您在这里所做的只是尝试将列的值设置为 CLOB 的toString,这不是您想要的。

您的代码示例并没有真正概述问题出在哪里,因为该方法只是执行传递的 SQL 的通用实用程序,但我建议两件事中的一件:

  1. 遵循 GriffeyDog的建议并切换到使用 PreparedStatement,在其中使用 PreparedStatement.setClob 绑定 CLOB。
  2. 如果您使用的是 Oracle 11g+ JDBC 驱动程序,则可以使用简单的 Java 字符串设置 CLOB 列的值。
于 2013-05-02T16:09:37.923 回答