此查询不起作用的原因是啥?得到: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 未知列 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章