当应用程序被删除时,Sqlite数据库会发生什么?

20

我是Android编程的新手,正在努力理解这个问题,只是为了让自己清楚事情的运作方式。

在创建Android应用程序中Sqlite数据库时,数据库存储在哪里?当卸载应用程序时,它会被删除吗?对于来自Web开发背景的人们来说,任何关于此的信息都将有助于更好地理解Android编程。


请阅读此链接:http://developer.android.com/guide/topics/data/data-storage.html。 - Chandra Sekhar
5个回答

26

SQlite数据库只是文件,它们像任何其他文件一样被处理:它们被存储在应用程序的私有数据区域(默认情况下为/data/data/$PACKAGENAME/databases)。 它们会随着应用程序的私有数据区域的所有内容一起被删除。

如果您愿意,可以在SD卡上创建数据库。 他们当然不会在卸载时被移除。


5
如果您在使用getExternalFilesDir()作为位置时,它们也将被删除。换句话说,这取决于您将数据库放在外部存储的哪个位置。 - CommonsWare
谢谢您的回复,David。所以只是为了理解清楚,它们是以文件形式存储的,而不像MSSQL或MySql那样在单个文件中存储吗? - Zishan Neno
我不知道MSSQL或MySQL是做什么的,但SQLite将每个数据库存储为应用程序控制下的单个文件。没有中央数据库存储。值得获取sqlite3命令行工具并尝试使用它来了解它的工作原理(它也很有用于调试)。 - David Given

1

除非您另有说明,否则应用程序将其数据保存在/data/data/<appname>下,SQLite数据库位于/data/data/<appname>/databases中。卸载应用程序时,将删除/data/data/<appname>的整个目录树,包括您的数据库。


1
目录不是/data/data/appname/databases - 而是/data/data/app.package.name/databases - Aleks G

1

数据库、偏好设置、缓存文件和临时文件都存储在手机内存的/data/data/app.package.name/位置。

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


0

通常,数据库会存储在

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

然而,依赖于此并不是一件好事。最好使用ContextWrapper上的getDatabasePath来查找它,例如:

File dbFile = getDatabasePath(db_name);

是的,通常情况下,如果您卸载应用程序,则整个目录/data/data/package.name.of.your.app将被删除。


0

数据库位于/data/data/app.package.name/databases。您只能在模拟器或已获取超级用户权限的设备上(例如带有超级用户权限的文件浏览器)访问此文件夹。

当您删除应用程序时,所有相关数据都将被删除(包括数据库)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接