嘿伙计们,我已经搜索了许多其他答案,但我仍然无法弄清楚这个问题。
statement.executeUpdate("CREATE TABLE IF NOT EXISTS recentlyWatched (fileName STRING NOT NULL, fileLocation STRING, viewCount INTEGER, PRIMARY KEY (fileName))");
Class.forName("org.sqlite.JDBC");
connection = DriverManager.getConnection("jdbc:sqlite:media.db");
statement = connection.createStatement();
statement.executeUpdate("INSERT INTO recentlyWatched (fileName, fileLocation, viewCount) VALUES ('"
+ fileName + "', '"
+ fileLocation + "', 0) ON DUPLICATE KEY UPDATE viewCount = '1'");
我已尝试过多种方法来解决此问题,每当我尝试插入记录时都会感到茫然,我得到“java.sql.SQLException:near”ON“:语法错误”。
更新
最终代码看起来像这样
statement.executeUpdate("INSERT OR IGNORE INTO recentlyWatched (fileName, fileLocation, viewCount) VALUES ('"
+ fileName + "', '"
+ fileLocation + "', 0)");
statement.executeUpdate("UPDATE recentlyWatched SET viewCount = viewCount + 1 WHERE '" + fileName + "' LIKE fileName;");
答案 0 :(得分:5)
从Class.forName("org.sqlite.JDBC")
可以看出,您正在使用不支持ON DUPLICATE
子句的SQLite数据库。这就是您收到此错误的原因。
检查this问题以获得解决方法。
答案 1 :(得分:1)
作为替代方案,我建议像这样使用它
("REPLACE INTO recentlyWatched (fileName, fileLocation, viewCount) VALUES ('"
+ fileName + "', '"
+ fileLocation + "', 0)
区别在于DELETE
然后是INSERT