java中的sql update查询,其中列名是动态获取的

时间:2014-03-17 00:42:04

标签: java mysql

在我的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

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

3 个答案:

答案 0 :(得分:2)

看起来您需要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经过严格的输入验证或使用超级安全,因此您不要打开自己的sql注射

答案 1 :(得分:0)

您的attchanged似乎是null。我会使用调试器来查找错误。

答案 2 :(得分:0)

尝试使用正确的格式。 String query1 =(“update test1.attendence set =?where ...”);