2013-06-18 117 views
0

當我關閉h2連接(發佈數據庫)並嘗試連接到另一個h2數據庫(調試數據庫)時,出現問題。h2斷開並連接

Snipplet連接:

this.connection = new JdbcConnectionSource(connectionString); 

Snipplet斷開:

this.connection.close(); 

的ConnectionString:

jdbc:h2:file:/data/data/my.app/databases/myapp 
jdbc:h2:file:/data/data/my.app/testdatabases/myapp 

然後而是採用了 「新的」 連接舊的使用的。 我正在爲數據庫使用不同的目錄。在這兩種情況下,當我嘗試在database1和database2之間切換時.lock和.trace文件不會在其目錄中被刪除。

我想在我身邊排除暗示故障。 我在Android 4.2.2上使用h2(當前版本)和ormlite。

+0

所以,如果你正在創建一個新的ConnectionSource,你需要創建新的DAO類,對吧? – Gray

+0

重新連接後,我需要調用DaoManager.createDao(連接,類) – user2379652

回答

0

然後不使用「新」連接使用舊的連接。

如果要創建一個新的ConnectionSource,那麼你將需要重新創建所有DAO類的,並從DaoManager內清除DAO緩存。每個DAO類都有一個它使用的舊連接源的副本。

ConnectionSource connectionSource = new JdbcConnectionSource(connectionString); 
DaoManager.clearCache(); 
Dao<Foo,Integer> fooDao = DaoManager.createDao(connectionSource, Foo.class); 
... 
+0

謝謝!這有助於在重新連接之後立即引發SQLException:「會話已關閉」。它發生在我首先查詢「新連接」時。但數據庫和表已成功創建。有任何想法嗎? – user2379652

+0

Hrm。我只是添加了以下測試,它似乎很好@ user2379652。 https://github.com/j256/ormlite-jdbc/blob/master/src/test/java/com/j256/ormlite/dao/DoubleDbOpenTest.java – Gray

+0

Thx我也測試了一個較小的數據庫。它也有效。但我認爲18個表格不應該是一個問題。一個瘋狂的事情,例外stil被拋出,但它的作品。我可以讀取和保存數據庫中的數據。 – user2379652