gpt4 book ai didi

java - java中的sql更新查询,其中列名是动态获取的

转载 作者:行者123 更新时间:2023-11-29 06:39:26 25 4
gpt4 key购买 nike

在我的 java 程序中,我正在更改每一行的每一列,并且它处于 for 循环中。所以列名随着循环的增加而改变。对列进行更改后,我想在数据库中更新它。我写了如下更新查询。

String query1="update test1.attendence set"+ colname +"= ? where id=?";
PreparedStatement pst=conn.prepareStatement(query1);
pst.setString(1, attchanged);
pst.setInt(2, rownum);
int result=pst.executeUpdate();

这里的 colname 是一个包含列名的变量。attchanged 是更改后的列值。rownum是行的id属性

当我执行它时,出现语法错误。

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 '= null where id=2' at line 1

你能告诉我写在这里的正确语法吗?

最佳答案

看起来您需要在 setcolname 之间留一个空格

String query1="update test1.attendence set "+ colname +"= ? where id=?";
PreparedStatement pst=conn.prepareStatement(query1);
pst.setString(1, attchanged);
pst.setInt(2, rownum);
int result=pst.executeUpdate();

确保 colname 经过严格的输入验证或 super 安全使用,这样你就不会让自己暴露在 sql 注入(inject)中

关于java - java中的sql更新查询,其中列名是动态获取的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22445150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com