我有一个单线程应用程序,它在本地文件系统上的 3 个不同文件中使用 3 个 SQLite 数据库。
我创建了一个DbAdapter
帮助类,它打开到 SQLite 数据库文件的连接。在这个类中,我有一个open
创建连接的close
方法和一个释放所有内容的方法。
这 3 个数据库是从派生的类访问的DbAdapter
。
在我的程序中,每个数据库访问都如下所示:
MyDbAdapter DB = new MyDBAdapter();
int stuff = DB.getStuff(); // queries the database
DB.close();
// now do something with `stuff`
我已记录所有对和的stdout
呼叫。每次有一个,一个紧随其后。
我还注意关闭我的所有s (这将导致关联的 s 也被关闭)。DbAdapter.open
DbAdapter.close
open()
close()
Statement
ResultSet
所以我猜我的数据库访问是干净的,因为我试图让它们尽可能短,并且一旦我不再需要它们,我就会释放所有资源。
然而,我仍然得到一个java.sql.SQLException: database is locked
.
有什么我做得不好的吗?我知道我没有显示任何代码,但我必须发布很多代码并且它不会相关。我只是问我是否在这里使用了最佳实践,因为我认为我这样做了,但我仍然遇到异常。
这是在 Mac OS 10.6 x64 上使用 Java 1.6,Xerial.org 的 sqlite-jdbc-3.7.2 驱动程序