比如
String sql = "update user set ? = ? - 1 where name = ? ";
(sql,"coins","coins","tom");
如果我执行类似的语句会报错
check the manual that corresponds to your MySQL server version for the right syntax to use near ' ' coins' = 'coins' - 1 where name = 'tom' '
我想知道通过?传参是不能指定列名吗?
如果可以是我sql语句写错了吗?
SQL语句中列名不能带引号,带引号的会被识别为字符串。
想要实现动态列update可以尝试字符串拼接的形式
xxx= ? 这个xxx就是列名。
' coins' = 'coins' - 1,coins字段应该为数字,而不是字符串,数字才能进行减法运算
你的问号是个sql绑定变量,变量是不能作为关键词、对象名、字段名等信息的。
如果要实现动态指定字段,只能采取常规字符串拼接的方式,但要注意的是,一定要做好防SQL注入