![](/img/trans.png)
[英]SQLITE_ERROR SQL error or missing database (near “(”: syntax error)
[英]SQL error or missing database (near “:01”: syntax error) in SQLite
我正在尝试使用 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");
当我运行代码时,我得到以下 output:
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)
部分中的 "near x" 来自时间的分钟部分,因此它随每次执行而变化。
我该如何解决这个错误(我对 SQLite 不太了解)?
要解决您的问题列time
,但date
应在引号内传递,您可以在连接值时添加引号,
date = "'"+ date +"'";
time = "'"+ time +"'";
String sql = "INSERT INTO AMBROZIJA (LEVEL,DATE,TIME)" +
" VALUES (" + koncentracijaAmbrozije + "," + date + "," + time+ ");";
但这是一种很好的做法,并且始终建议使用prepareStatement
绑定值而不是连接它,正如评论中所建议的那样,但是在处理日期列时它的工作量更大。 找到了一个很好的SO 链接,你可以看看。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.