我是Android编程的新手,正在努力理解这个问题,只是为了让自己清楚事情的运作方式。
在创建Android应用程序中Sqlite数据库时,数据库存储在哪里?当卸载应用程序时,它会被删除吗?对于来自Web开发背景的人们来说,任何关于此的信息都将有助于更好地理解Android编程。
SQlite数据库只是文件,它们像任何其他文件一样被处理:它们被存储在应用程序的私有数据区域(默认情况下为/data/data/$PACKAGENAME/databases
)。 它们会随着应用程序的私有数据区域的所有内容一起被删除。
如果您愿意,可以在SD卡上创建数据库。 他们当然不会在卸载时被移除。
getExternalFilesDir()
作为位置时,它们也将被删除。换句话说,这取决于您将数据库放在外部存储的哪个位置。 - CommonsWare除非您另有说明,否则应用程序将其数据保存在/data/data/<appname>
下,SQLite数据库位于/data/data/<appname>/databases
中。卸载应用程序时,将删除/data/data/<appname>
的整个目录树,包括您的数据库。
/data/data/appname/databases
- 而是/data/data/app.package.name/databases
。 - Aleks G数据库、偏好设置、缓存文件和临时文件都存储在手机内存的/data/data/app.package.name/位置。
当您卸载应用程序时,该应用程序的整个手机内存文件夹将被完全删除。
通常,数据库会存储在
/data/data/package.name.of.your.app/databases
然而,依赖于此并不是一件好事。最好使用ContextWrapper
上的getDatabasePath
来查找它,例如:
File dbFile = getDatabasePath(db_name);
是的,通常情况下,如果您卸载应用程序,则整个目录/data/data/package.name.of.your.app
将被删除。
数据库位于/data/data/app.package.name/databases
。您只能在模拟器或已获取超级用户权限的设备上(例如带有超级用户权限的文件浏览器)访问此文件夹。
当您删除应用程序时,所有相关数据都将被删除(包括数据库)。