【发布时间】:2016-04-22 14:23:38
【问题描述】:
我正在尝试更新 SQLite DB 中的特定行,但它似乎不起作用。这就是数据库的样子。
-----------------------
_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)
-----------------------
_id | user | coins
-----------------------
1 | me | 20
-----------------------
我想做的就是将“20”更新为“10”(或其他数字)。 我该如何正确地做到这一点?
【问题讨论】:
-
你需要更新 SQL,看这里:stackoverflow.com/questions/23060309/…
-
@GordThompson 我同意,除了唯一(并且被接受的)答案实际上并没有回答这个问题(也没有真正回答那个链接的问题)。