Javafx中的SqLite错误

Sun*_*iel 1 java sqlite javafx

在调用一种方法来计算新的贷方余额后,我在更新数据库时遇到问题.

[SQLITE_ERROR] SQL错误或缺少数据库(靠近"'18 .0'":语法错误)

这是我的查询:

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

我用"+ newCreditBalance +"做错了吗?它应该是java和我的数据库中的double值.

Log*_*kup 5

语法错误是因为你缺少一个等号:"UPDATE cards SET cardBalance="+newCreditBalance.

但是,使用字符串连接将值放入SQL查询或语句(因为SQL注入的危险)是一个非常糟糕的主意.相反,将这样的字符串传递给prepareStatement():UPDATE cards SET cardBalance = ? WHERE cardID = ?"

然后在实际执行查询之前调用相关的setter方法:

pst.setFloat(1, newCreditBalance);
pst.setString(2, idList.getValue().toString);
Run Code Online (Sandbox Code Playgroud)

您也应该使用正确的类型idList.getValue(),但从您的示例我不知道应该是什么.

  • 另请注意,由于`idList.getValue().toString`是无效的SQL,因此存在另一种语法错误. (2认同)