OSDN Git Service

applied a patch from Mikhail
authorleo <leo@ae02f08e-27ec-0310-ae8c-8ba02fe2eafd>
Fri, 16 Jan 2009 02:12:55 +0000 (02:12 +0000)
committerleo <leo@ae02f08e-27ec-0310-ae8c-8ba02fe2eafd>
Fri, 16 Jan 2009 02:12:55 +0000 (02:12 +0000)
git-svn-id: http://www.xerial.org/svn/project/XerialJ/trunk/sqlite-jdbc@2844 ae02f08e-27ec-0310-ae8c-8ba02fe2eafd

src/main/java/org/sqlite/Conn.java

index 9c3857e..080b42b 100644 (file)
@@ -26,6 +26,7 @@ class Conn implements Connection
     private DB db = null;
     private MetaData meta = null;
     private boolean autoCommit = true;
+    private int transactionIsolation = TRANSACTION_SERIALIZABLE; 
     private int timeout = 0;
 
     public Conn(String url, String filename, boolean sharedCache)
@@ -126,10 +127,21 @@ class Conn implements Connection
             "SQLite only supports CLOSE_CURSORS_AT_COMMIT");
     }
 
-    public int getTransactionIsolation() { return TRANSACTION_SERIALIZABLE; }
+    public int getTransactionIsolation() { 
+        return transactionIsolation; 
+    } 
     public void setTransactionIsolation(int level) throws SQLException {
-        if (level != TRANSACTION_SERIALIZABLE) throw new SQLException(
-            "SQLite supports only TRANSACTION_SERIALIZABLE");
+        switch (level) { 
+        case TRANSACTION_SERIALIZABLE: 
+            db.exec("PRAGMA read_uncommitted = false;"); 
+            break; 
+        case TRANSACTION_READ_UNCOMMITTED: 
+            db.exec("PRAGMA read_uncommitted = true;"); 
+            break; 
+        default: 
+            throw new SQLException("SQLite supports only TRANSACTION_SERIALIZABLE and TRANSACTION_READ_UNCOMMITTED."); 
+        } 
+        transactionIsolation = level; 
     }
 
     public Map getTypeMap() throws SQLException