2012-07-03 30 views
5

我希望在打开写连接时希望拥有只读和写连接,希望它具有独占锁定。 这看起来像它应该工作使用SQlite JDBC库在Java/Scala中使用独占锁来打开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

,我能亲自使其正常工作的唯一方法是通过在DB本身这样执行查询:

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

可以将其与journal_mode = WAL相结合?如果我尝试设置这两个命令,我会得到一个SQLITE_BUSY错误 – hithwen