【问题标题】:What is the reason for this query is not working? Got: MySQLSyntaxErrorException Unknown column [closed]此查询不起作用的原因是什么?得到:MySQLSyntaxErrorException 未知列 [关闭]
【发布时间】:2026-02-12 14:25:25
【问题描述】:

我在客户餐桌上的列

cusid  cusname cusadress paidamount  email

cus123  damidu   kegalle  45           adfff

这是我的 Java 查询

String query = "UPDATE `customer` SET `cusname`='"+jTextField_name.getText()+"',`cusadress`='"+jTextField_adress.getText()+"',`paidamount`='"+jTextField_amount.getText()+"',`email`="+jTextField_emailuser.getText()+" WHERE `cusid` = "+jTextField_id.getText();
executeSQlQuery(query, "Updated");

错误

 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'cus123' in 'where clause'

是什么原因导致这次更新不起作用,但插入和删除语句起作用?

【问题讨论】:

  • 1) 可能的 SQL 注入 2) 使用参数绑定而不是连接 SQL 字符串 3) cus123 != 'cus123'
  • 使用preparedStatement
  • 这样的查询是一团糟。尝试使用preparedStatement。
  • @LucianovanderVeekens 抱歉,也许是我,因为 Alex 似乎也做过同样的事情 但是 看起来 WHERE cusid = 更改为 WHERE ``cusid`` = - 也许反引号只是最初没有出现 - 如果是这样,请接受我的道歉
  • @ScaryWombat 有用的说明:在查看进行诸如将非代码更改为代码之类的编辑时,在并排标记中查看编辑通常更有用,因为这只会突出缩进和将其余文本显示为相同。

标签: java sql jdbc


【解决方案1】:

像下面这样使用 PreparedStatement:

String updateQuery = "UPDATE customer SET cusname=?,cusadress=?,paidamount=?,email=? WHERE cusid=?";

PreparedStatement stmt=con.prepareStatement(updateQuery); // con is reference variable of Connection class
        stmt.setString(1, jTextField_name.getText());
        stmt.setString(2, jTextField_adress.getText());
        stmt.setInt(3, jTextField_amount.getText());
        stmt.setString(4, jTextField_emailuser.getText());
        stmt.setString(5, jTextField_id.getText());

希望这会有所帮助。

【讨论】:

  • 在我看来cusid 不是数字,它是基于字符串的。但是paidamount 看起来像是基于数字的
  • @AlexK 感谢您的澄清。我在假设,它应该是数字。会更新的
  • 我同意你的看法。这只是一个小评论:)
  • 谢谢先生,我会试试的
  • @DamiduRathnayaka 当然