2016-10-13 27 views
1

我在調用一個方法來累計新的貸方餘額後更新我的數據庫時遇到問題。Javafx中的SqLite錯誤

[SQLITE_ERROR] SQL錯誤或丟失的數據庫(近 「'18 0.0' 」:語法錯誤)

這是我的查詢:

try { 
     String query = "UPDATE cards SET cardBalance '"+newCreditBalance+"' WHERE cardID = idList.getValue().toString"; 
     PreparedStatement pst = connection.prepareStatement(query); 

我做出的任何錯誤「 「+ newCreditBalance +」 「?它應該是Java和我的數據庫的雙重價值。

回答

5

語法錯誤是因爲您缺少等號:"UPDATE cards SET cardBalance="+newCreditBalance

但是,像這樣使用字符串連接將值放入SQL查詢或語句(因爲有SQL injection的危險)是一個非常糟糕的主意。相反,傳遞一個字符串像這樣prepareStatement():UPDATE cards SET cardBalance = ? WHERE cardID = ?"

,然後實際執行查詢之前調用相關的setter方法:

pst.setFloat(1, newCreditBalance); 
pst.setString(2, idList.getValue().toString); 

你也應該使用的正確類型idList.getValue(),但是從你的例子我不知道應該是什麼。

+2

另請注意,還有另一種語法錯誤,因爲'idList.getValue()。toString'不是有效的SQL。 –