2016-12-03 84 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