2016-10-13 9 views
1

Ich habe ein Problem mit der Aktualisierung meiner Datenbank nach dem Aufruf einer Methode, um ein neues Guthaben zu summieren.SqLite Fehler in Javafx

[sqlite_error] SQL-Fehler oder fehlende Datenbank (in der Nähe von "'18 .0' ": Syntaxfehler)

Dies ist meine Frage:

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

Habe ich einen Fehler mit ‚ "+ newCreditBalance +" '? Es sollte ein doppelter Wert sowohl in Java als auch in meiner Datenbank sein.

Antwort

5

Der Syntaxfehler ist, weil Sie ein Gleichheitszeichen fehlt: "UPDATE cards SET cardBalance="+newCreditBalance.

Es ist jedoch eine sehr schlechte Idee, String-Verkettung wie diese zu verwenden, um Werte in eine SQL-Abfrage oder -Anweisung zu setzen (wegen der Gefahr von SQL injection). Verwenden Sie stattdessen eine Zeichenfolge wie folgt zu prepareStatement() übergeben: UPDATE cards SET cardBalance = ? WHERE cardID = ?"

Und dann die entsprechenden Setter-Methoden aufrufen, bevor tatsächlich die Ausführung der Abfrage:

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

Sie sollten auch den richtigen Typ für idList.getValue() verwenden, sondern aus Ihr Beispiel Ich weiß nicht, was das sein soll.

+2

Beachten Sie auch, dass es einen weiteren Syntaxfehler gibt, da 'idList.getValue(). ToString' kein gültiges SQL ist. –