android 应用程序中 sqlite 数据库的位置应该是什么?
What should be the location of sqlite database in android application?
目前,我正在开发一个android应用程序,它会在打开后立即从服务器下载sqlite数据库。我必须在应用程序中非常频繁地使用这个数据库文件,并且必须经常从这个数据库文件中获取数据。那么,这个数据库在手机中的正确位置或目录应该是什么,这样我才能有效地读/写这个数据库文件。
默认情况下,新创建的数据库存储在:
//data/data/<Your-Application-Package-Name>/databases/<your-database-name>
但是这个文件夹在非 root 设备上是无法访问的。通过 Internet 传输数据库存在安全风险,但如果绝对必要,您可以像这样修改 MySQLiteOpenHelper 构造函数:
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
MySQLiteOpenHelper(Context context) {
super(context, "/mnt/sdcard/<your-app-name>/database_name.db", null, 0);
}
}
通过这样做,您将数据库存储在 SD 卡上的一个文件夹中。
请记住,通过使用此方法,您需要额外的权限才能在 manifest.xml:
中写入外部存储
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
您可以在此处找到更多信息和示例:Location of sqlite database on the device
目前,我正在开发一个android应用程序,它会在打开后立即从服务器下载sqlite数据库。我必须在应用程序中非常频繁地使用这个数据库文件,并且必须经常从这个数据库文件中获取数据。那么,这个数据库在手机中的正确位置或目录应该是什么,这样我才能有效地读/写这个数据库文件。
默认情况下,新创建的数据库存储在:
//data/data/<Your-Application-Package-Name>/databases/<your-database-name>
但是这个文件夹在非 root 设备上是无法访问的。通过 Internet 传输数据库存在安全风险,但如果绝对必要,您可以像这样修改 MySQLiteOpenHelper 构造函数:
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
MySQLiteOpenHelper(Context context) {
super(context, "/mnt/sdcard/<your-app-name>/database_name.db", null, 0);
}
}
通过这样做,您将数据库存储在 SD 卡上的一个文件夹中。
请记住,通过使用此方法,您需要额外的权限才能在 manifest.xml:
中写入外部存储<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
您可以在此处找到更多信息和示例:Location of sqlite database on the device