2013-05-02 122 views
0

我想更新一列是CLOB类型,方法如下;使用CLOB值更新oracle中的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 [email protected], TEXTT5='ANAFORM',ANATABLO='1', OLUSTURAN_KULLANICI='184' WHERE ID=1 

我得到 “java.sql.SQLSyntaxErrorException:ORA-01729:数据库链接名称预期” 的错误

我怎么能解决这个SQL。请帮助。

+0

修复什么?你有错误信息吗? – 2013-05-02 14:40:50

+0

是的,我得到 “java.sql.SQLSyntaxErrorException:ORA-01729:数据库链接名称预期” 的错误,我的SQL查询“UPDATE K1SSS_LISTGRID3 SET TEXTAREA4 = oracle.sql.CLOB @ 77df8d,TEXTT5 = 'deneme',ANATABLO ='1 ”,OLUSTURAN_KULLANICI = '184' WHERE ID = 23" – 2013-05-02 14:50:10

+1

使用[用预处理](http://docs.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html)和'setClob'方法。 – GriffeyDog 2013-05-02 15:00:43

回答

1

甲骨文在解释这个SQL

SET [email protected] 

如因为@符号的数据库链接,但它并不怎样都无所谓,因为你在这里所做的是试图设置的值列到CLOB的toString,这不是你想要的。

您的代码示例并没有真正勾勒出哪里出了问题是因为该方法只是一般程序来执行通过SQL,但我建议1 2的东西:

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