java - Javafx 中的 SqLite 错误

标签 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);

我是否对“+newCreditBalance+”有任何错误?它在 java 和我的数据库中都应该是 double 值。

最佳答案

语法错误是因为您缺少等号:"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() 使用正确的类型,但根据您的示例我不知道应该是什么类型。

关于java - Javafx 中的 SqLite 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40010222/

相关文章:

java - 共同应用接口(interface)的多个实现或条件

macos - SQLite header 和源版本不匹配

ios - 将 SQLite 与 iOS 一起使用……非常初学者的程序

java - 为什么 Circle 隐藏在 Line 后面?

java - 从我的界面找不到方法

java - 使用 Citrus 时如何禁用服务器证书中的主机名验证

java - POSIX_SPAWN 与 Java?

java - SQLite JDBC 连接的准确语法是什么?

JavaFX TableView 点击排序器不工作?

java - 为什么 JavaFX 应用程序和场景构建器显示乱码?