JDBC update时通过?指定要修改的列名?

比如
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注入