2012-03-07 86 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/

当您卸载您的应用程序时,此应用程序的整个手机内存文件夹将被完全删除。

相关问题