Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更新SQLite数据库中的值?_Java_Sqlite_Jdbc - Fatal编程技术网

Java 如何更新SQLite数据库中的值?

Java 如何更新SQLite数据库中的值?,java,sqlite,jdbc,Java,Sqlite,Jdbc,我试图更新SQLite数据库中的一个特定行,但它似乎不起作用。这就是数据库的外观 ----------------------- _id | user | coins ----------------------- 1 | me | 20 ----------------------- 这就是我的代码的样子: public static void updateUserWallet() throws SQLException { try { int

我试图更新SQLite数据库中的一个特定行,但它似乎不起作用。这就是数据库的外观

-----------------------
_id | user | coins
-----------------------
1   | me   | 20
-----------------------
这就是我的代码的样子:

public static void updateUserWallet() throws SQLException {
        try {
            int coins;
            Class.forName("org.sqlite.JDBC");
            Connection connection = DriverManager.getConnection("jdbc:sqlite:Database.db");

            String query = "Select * from userSettings WHERE user = " + "'" + lastUser + "'";
            Statement statement = connection.createStatement();
            ResultSet result = statement.executeQuery(query);

            while (result.next()) {
                coins = result.getInt("coins");
                result.updateInt("coins", 10);
                result.updateRow();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
选择表和内容是可行的,但当我第二次执行此代码时,它崩溃了:

result.updateInt("coins", 10);
result.updateRow();
出现此错误时:

java.sql.SQLException: not implemented by SQLite JDBC driver

    at org.sqlite.jdbc4.JDBC4ResultSet.unused(JDBC4ResultSet.java:321)
    at org.sqlite.jdbc4.JDBC4ResultSet.updateInt(JDBC4ResultSet.java:452)
    at dysanix.advanced.kikbot.main.updateUserWallet(main.java:367)
    at dysanix.advanced.kikbot.main$1.cmdGameRoll(main.java:266)
    at dysanix.advanced.kikbot.main$1.run(main.java:142)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

我只想把“20”改成“10”(或另一个数字)。
如何正确地执行此操作?

错误消息告诉您SQLite JDBC驱动程序不支持可更新的结果集。(该功能“不是由SQLite JDBC驱动程序实现的”。)因此,您需要使用UPDATE语句,如下所示:

String query=“UPDATE userSettings SET coins=?WHERE user=?”;
PreparedStatement=connection.prepareStatement(查询);
声明.setInt(1,10);
语句.setString(2,最后一个用户);
语句。executeUpdate();

您需要更新SQL,请看这里:@GordThompson的可能重复项我同意,除了唯一(且被接受的)答案实际上没有回答这个问题(也没有真正回答链接的问题)。
-----------------------
_id | user | coins
-----------------------
1   | me   | 20
-----------------------