2012-07-03 26 views
5

Tôi muốn chỉ đọc và ghi kết nối cho sqlite, khi tôi mở kết nối ghi, tôi muốn nó có khóa độc quyền. này có vẻ như nó nên làm việcMở kết nối Sqlite bằng khóa độc quyền trong Java/Scala bằng cách sử dụng thư viện SQlite JDBC

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

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

nhưng tiếc là tôi nhận được một ngoại lệ

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

Tôi cũng đã cố gắng thiết lập các thuộc tính trực tiếp, thay vì sử dụng lớp Sqlite jdbc SQLiteConfig

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

Mọi đề xuất?

Trả lời

1

Cách duy nhất mà tôi đã có thể cá nhân làm cho nó làm việc là bằng cách thực hiện một truy vấn trên DB tự như thế này:

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

Nó có thể được kết hợp với journal_mode = WAL? Tôi gặp lỗi SQLITE_BUSY nếu tôi cố đặt cả hai, không quan tâm đến thứ tự – hithwen

Các vấn đề liên quan