使用SQlite JDBC库在Java / Scala中使用独占锁打开Sqlite连接

时间:2012-07-03 13:24:42

标签: sqlite connection locking

我希望只读取并写入sqlite的连接,当我打开写连接时,我希望它有一个独占锁。 这看起来应该可行

val config = new SQLiteConfig();
config.setLockingMode(org.sqlite.SQLiteConfig.LockingMode.EXCLUSIVE)

val connection = DriverManager.getConnection("jdbc:sqlite:" + this.getPath() +"\\" + this.dbName, config.toProperties)

但不幸的是我得到了一个例外

Exception in thread "main" java.sql.BatchUpdateException: batch entry 0: query returns results

我也试过直接设置属性,而不是使用Sqlite jdbc SQLiteConfig类

val prop = new Properties();
prop.setProperty("locking_mode", "EXCLUSIVE");

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

我个人能够使其工作的唯一方法是通过在DB上执行查询,如下所示:

conn.createStatement().execute("PRAGMA locking_mode = EXCLUSIVE");