2012-07-03 26 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