2016-12-03 87 views
0

我使用java编码一些数据库事务。我使用java发送查询。我认为它没有问题。如果我在提示时发送查询,它正在工作。使用Java的Java

此方法正在更新书籍数量。

private static void updateBquantity(int bqt, String bname) { 
    Connection con = makeConnection(); 
    try { 
     Statement stmt = con.createStatement(); 
     System.out.println(bqt + " " +bname); 
     //this part is making problem 
     stmt.executeUpdate("update books set bookquantity = bookquantity -" + bqt + "where bookname = '" + bname + "';"); 
     System.out.println("<book quantity updated>"); 
    } catch (SQLException e) { 
     System.out.println(e.getMessage()); 
     System.exit(0); 
    } 

    stmt.executeUpdate("update books set bookquantity = bookquantity -" + bqt + "where 도서이름 = '" + bname + "';"); 

这部分是制造问题。

使用此表单的其他查询正在工作。

编译器说:

您的SQL语法错误;检查 对应于你的MySQL服务器版本正确的语法使用 附近“BOOKNAME =‘达芬奇密码’”在1号线

帮助我的手册。

+1

空间,反引号,所有爵士乐 – Drew

+0

这是一个** **查询 - 不是“querry” - 一个“R”非常好! –

回答

0

我很困惑bookname = 'Davinci Code,其中是你的查询中的书名?不管如何,在此查询,您where之前错过了一个空白,试试这个:

stmt.executeUpdate("update books set bookquantity = bookquantity -" + bqt + " where 도서이름 = '" + bname + "';"); 
+0

omg你明白了。感谢您的回答:D – Kenny

+0

不要这样做,它很容易受到SQL注入攻击。 @Kenny你应该考虑使用带有参数绑定的预处理语句来正确执行你的查询。 – Joost