2011-10-12 62 views
1

我在我的android項目中使用SQLite。有一項對我來說很清楚的特性 - 如果有多個線程與數據庫一起工作,那麼他們應該只使用一個DBHelper實例,並且SQLite保證對數據庫的安全訪問(即使併發)。 但我仍然有一件事需要澄清。我應該如何使用數據庫連接進行管理(SQLiteDatabase對象)?我應該多長時間撥打geWritableDatabase()close()?如果我一次調用這些方法可以嗎?或者,每次我在數據庫上執行讀/寫操作時,最好是獲得SQLDatabase對象並關閉一個對象?Android SQLite連接管理

回答

0

它被默認處理......我的意思是,如果一個可寫數據庫打開,每當你試圖訪問只讀數據庫時,它都會關閉可寫數據庫並創建新的只讀數據庫實例。據我所知:)

+0

如果我想從多個線程寫入數據庫比應該getWritableDatabase()和關閉()在其中每個調用? – tundundun

+1

是的。最好每次調用getWritableDatabase()和getReadableDatabase()方法,以確保您將要使用哪一個...此外,如果存在多線程,則必須在那裏管理某種同步,其中沒有開發人員在從數據庫獲取數據時要關閉其數據庫 –

+1

另請參閱javadoc說明...創建和/或打開數據庫。這將與getWritableDatabase()返回的對象相同,除非某些問題(如完整磁盤)要求數據庫以只讀方式打開。在這種情況下,將返回一個只讀數據庫對象。如果問題得到解決,以後對getWritableDatabase()的調用可能會成功,在這種情況下,只讀數據庫對象將被關閉,並且將來會返回讀/寫對象。 –