更新字段时Mysql数据库错误

时间:2012-08-21 14:21:10

标签: java mysql database swing

我使用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)。我的错误是什么?

2 个答案:

答案 0 :(得分:6)

在where:

之前添加一个空格
 " where Part_number = '" + partno + "'";

作为一种良好做法,我建议您使用PreparedStatement并使用相同的参数设置参数。动态连接参数可能会强制db引擎每次都解析一个新的SQL语句。

  

预编译SQL语句并将其存储在PreparedStatement中   宾语。然后可以使用该对象有效地执行此操作   声明多次。

请参阅:PreparedStatement

答案 1 :(得分:3)

缺少空间:

... + qty +      "where ...
                  ^--- here

使您的查询类似

... qnty_received - blahwhere