此查询不起作用的原因是啥?得到:MySQLSyntaxErrorException 未知列 [关闭]

Posted

技术标签:

【中文标题】此查询不起作用的原因是啥?得到:MySQLSyntaxErrorException 未知列 [关闭]【英文标题】:What is the reason for this query is not working? Got: MySQLSyntaxErrorException Unknown column [closed]此查询不起作用的原因是什么?得到:MySQLSyntaxErrorException 未知列 [关闭] 【发布时间】:2018-01-31 15:28:49 【问题描述】:

我在客户餐桌上的列

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 有用的说明:在查看进行诸如将非代码更改为代码之类的编辑时,在并排标记中查看编辑通常更有用,因为这只会突出缩进和将其余文本显示为相同。 【参考方案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 当然

以上是关于此查询不起作用的原因是啥?得到:MySQLSyntaxErrorException 未知列 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Intellisense 在 SQL Server Management Studio 中不起作用。可能是啥原因?

CSS媒体查询由于某种原因不起作用

基于 ROW_Number 的 SQL 查询不起作用

CSS媒体查询更改html选择器中的字体大小不起作用

媒体查询在 React 中不起作用

案例陈述中出现此错误的原因是啥