2012-03-07 82 views
13

我是Android編程的新手,並試圖將我的頭圍繞在此以便讓我自己清楚如何工作。當應用程序被刪除時,Sqlite數據庫會發生什麼變化

在Android應用程序中創建Sqlite數據庫時,數據庫存儲在哪裏?當應用程序被刪除後它會被刪除嗎?任何有關此信息都將有助於理解來自Web開發背景的人員的Android編程。

+0

閱讀本文http://developer.android.com/guide/topics/data/data-storage.html – 2012-03-07 13:59:03

回答

19

SQlite數據庫只是文件,它們像其他任何文件一樣對待:它們存儲在應用程序的專用數據區域(默認)(/data/data/$PACKAGENAME/databases)。它們與應用程序私有數據區域中的所有其他內容一起被刪除。

如果您願意,您可以在SD卡上創建數據庫。當然,它們在卸載時不會被刪除。

+4

實際上,如果您使用'getExternalFilesDir()'作爲位置,它們也會被刪除。 IOW,它取決於你在外部存儲數據庫的位置。 – CommonsWare 2012-03-07 13:59:48

+0

謝謝你的回覆,大衛。所以爲了正確地做到這一點,它們存儲爲文件而不是像MSSQL或MySql那樣存儲在單個文件中? – Zishan 2012-03-07 14:14:51

+0

我不知道MSSQL或MySQL做了什麼,但SQLite將每個數據庫作爲單個文件存儲在應用程序的控制下。沒有中央數據庫存儲。值得獲取sqlite3命令行工具並使用它來了解它是如何工作的(並且它對調試也很有用)。 – 2012-03-07 14:24:52

0

該數據庫位於/data/data/app.package.name/databases。您只能在模擬器或有根設備上訪問此文件夾(例如,具有超級用戶權限的文件資源管理器)。

當你刪除一個應用程序的所有相關的數據都是被刪除(包括數據庫)

0

除非另有說明(由你),應用程序保持其DATAS /data/data/<appname>下,和SQLite的數據庫是/data/data/<appname>/databases。卸載應用程序時,將刪除整個目錄樹/data/data/<appname>,包括您的數據庫。

+0

該目錄不是'/ data/data/appname/databases' - 它是'/ data/data/app.package.name/databases' – 2012-03-07 14:01:55

0

通常情況下,該數據庫將被存儲在

/data/data/package.name.of.your.app/databases 

但是它不是靠這個好事。這是更好的使用它在getDatabasePathContextWrapper,如發現:

File dbFile = getDatabasePath(db_name); 

而且,是的,通常整個目錄/data/data/package.name.of.your.app是,如果你卸載該應用中刪除。

0

數據庫,首選項,緩存文件,臨時文件都存儲在手機內存中的位置/data/data/app.package.name/

當您卸載您的應用程序時,此應用程序的整個手機內存文件夾將被完全刪除。

相關問題