我使用Java Swing应用程序更新Mysql表中的列。这是我的代码(部分)
String qunty = txtWithdraw.getText();
String partno = txtNo.getText();
int qty = Integer.parseInt(qunty);
con = DriverManager.getConnection(url + db, "username", "password");
Statement st = con.createStatement();
String sell = "update Store_info_table set qnty_received = qnty_received - " + qty + "where Part_number = '" + partno + "'";
st.executeUpdate(sell);
我得到的例外情况是:
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 'Part_number = 'DF6534'' at line 1
我想更新qnty_received字段,使其等于原始值减去用户传递的值,即(int qty)。我的错误是什么?
答案 0 :(得分:6)
在where:
之前添加一个空格 " where Part_number = '" + partno + "'";
作为一种良好做法,我建议您使用PreparedStatement
并使用相同的参数设置参数。动态连接参数可能会强制db引擎每次都解析一个新的SQL语句。
预编译SQL语句并将其存储在PreparedStatement中 宾语。然后可以使用该对象有效地执行此操作 声明多次。
答案 1 :(得分:3)
缺少空间:
... + qty + "where ...
^--- here
使您的查询类似
... qnty_received - blahwhere