【发布时间】:2020-12-11 01:05:32
【问题描述】:
我正在尝试使用 Java 更新 SQLite 表。这是代码的相关部分:
try {
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection("jdbc:sqlite:test.db");
c.setAutoCommit(false);
System.out.println("Opened database successfully");
stmt = c.createStatement();
String sql = "INSERT INTO AMBROZIJA (LEVEL,DATE,TIME) " +
"VALUES ("+koncentracijaAmbrozije+","+date+","+time+");";
System.out.println(sql);
stmt.executeUpdate(sql);
stmt.close();
c.commit();
c.close();
} catch ( Exception e ) {
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
System.exit(0);
}
System.out.println("Records created successfully");
当我运行代码时,我得到以下输出:
INSERT INTO AMBROZIJA (LEVEL,DATE,TIME) VALUES (6.5,2020-08-21,18:01:44.087078100);
org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (near ":01": syntax error)
Process finished with exit code 0
(near ":01": syntax error) 部分中的“接近 x”部分来自时间的分钟部分,因此它随着每次执行而变化。
如何解决这个错误(我对 SQLite 了解不多)?
【问题讨论】:
-
日期和时间值应该用单引号括起来,但最好学会使用Prepared statements:sqlitetutorial.net/sqlite-java/insert
-
你应该看看prepared statements