日期:2014-05-16  浏览次数:20574 次

java mysql 预处理 列名可否作为参数?
对于数据库的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

说是格式错误。求教给位大侠怎么解决???谢谢!!感激不尽!!

------解决方案--------------------
打印出来你的sql语句看看 肯定拼接错了
------解决方案--------------------
这是不能的,
<prop key="hibernate.show_sql">false</prop>
你设置为true可以显示你的HQL


---------------------------------------------
为什么会报错呢?

"UPDATE result SET ?=? WHERE ID=?" 第一个参数处应该是列名
绑定的是这样的。
setString(1,“Linux”);
setString(2,“ubuntu”);
setString(3,1);


HQL

UPDATE result SET "Linux"="ubuntu" WHERE ID=1;

这句科执行吗?当然不可以。
因为你绑定时字符串是要带“”的,否则就不叫字符串变量了



------解决方案--------------------
列名无法做为参数,但既然已经是在JAVA中编程了,你可以直接在JAVA的代码中生成你需要的SQL语句字符串。
------解决方案--------------------
列名怎么能作为参数呢?直接在java程序中调用不就可以了或者直接写在程序了。