【发布时间】:2012-12-06 15:25:11
【问题描述】:
我正在使用 Java 开发一个项目,我必须在我的 SQLite 数据库中进行修改。 我连接到它并且工作得很好,除了这个奇怪的错误。
s.executeUpdate("INSERT INTO STUDENTS VALUES('S0',11)");
...
//many statements... including queries
...
String c2="INSERT INTO STUDENTS VALUES ('S1', 2)";
s.executeUpdate(c2);
s.executeUpdate("DROP TABLE STUDENTS");
语句s.executeUpdate("INSERT INTO STUDENTS VALUES('S0',11)"); 和s.executeUpdate(c2); 运行完美,并将行插入数据库。但是当谈到下面的语句时,我得到了奇怪的数据库锁定错误。
当我将查询更改为另一个时,它也工作得很好。到达结束语句时出现错误。更准确地说,上面编写的所有查询,即这里代码的第一条语句都可以正常工作。
请帮我找出错误。
【问题讨论】:
-
请不要在未阅读我的问题的情况下投反对票。我知道 Stack Overflow 上有很多关于这种类型的帖子,但我的帖子很特别。它最后只向我显示了一次异常,我最后也关闭了 Statement 和连接。
-
您是否开始了一项未向我们展示的交易?我的猜测是您无法删除该表,因为更新将其锁定以等待提交。像 drop 这样的 DDL 语句不是事务性的。
-
@Paolo:在 SQLite 中,DDL 语句也是事务性的。
-
@Paolo:不,所有的语句都类似于插入、查询和更新。就是这样。
-
DROP TABLE命令不返回受影响记录的数量,因此您应该使用execute而不是executeUpdate。
标签: java database sqlite jdbc database-locking