对于数据库的UPDATE操作,写了如下的预处理语句 "UPDATE result SET ?=? WHERE ID=?" 第一个参数处应该是列名假如我要UPDATE的列名叫“Linux”,我在调用这个预处理语句时,用setString(1,“Linux”)的方法 给参数赋了值在java中运行,报异常
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Linux'=1 WHERE ID=1' at line 1说是格式错误。求教给位大侠怎么解决???谢谢!!感激不尽!!
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Linux'=1 WHERE ID=1' at line 1说是格式错误。求教给位大侠怎么解决???谢谢!!感激不尽!!
<prop key="hibernate.show_sql">false</prop>
你设置为true可以显示你的HQL
---------------------------------------------
为什么会报错呢?"UPDATE result SET ?=? WHERE ID=?" 第一个参数处应该是列名
绑定的是这样的。
setString(1,“Linux”);
setString(2,“ubuntu”);
setString(3,1);
HQLUPDATE result SET "Linux"="ubuntu" WHERE ID=1;这句科执行吗?当然不可以。
因为你绑定时字符串是要带“”的,否则就不叫字符串变量了
UPDATE result SET 'Linux'=1 WHERE ID=1
是无法执行的,会说格式错误
但如果把Linux的单引号去掉,即:
UPDATE result SET Linux=1 WHERE ID=1
就是可以执行的。
可用了setString(1,"Linux")以后列名确实是带一个单引号啊??如果能去掉应该就好了!!
Hibernate 对sql 进行封装了,他的语法和sql还有一定的区别,比如必要从user 表中查数据,你的HQL 可以这样 hql=“ from User wehre ... ” 注意User 要大写,这是根据ORM映射产生的一个 类User。
但是在Hibernate 也可以直接执行原生态的sql,只不过电泳的函数不一样罢了。