Android 无法打开数据库
到目前为止,我的应用程序运行良好,但在某些设备上,我遇到了一个错误(例如Android 4.1或4.3) 在DBManager类中,我有:Android 无法打开数据库,android,sqlite,Android,Sqlite,到目前为止,我的应用程序运行良好,但在某些设备上,我遇到了一个错误(例如Android 4.1或4.3) 在DBManager类中,我有: public class DBManager { public DBHelper helper; private SQLiteDatabase db; private Cursor c; public DBManager(Context context) { helper = new DBHelper(con
public class DBManager {
public DBHelper helper;
private SQLiteDatabase db;
private Cursor c;
public DBManager(Context context) {
helper = new DBHelper(context);
db = helper.getReadableDatabase();
// db = helper.getWritableDatabase();
}
在这方面:
public class DBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = Environment.getExternalStorageDirectory() + "/database/database.db3";
private static final int DATABASE_VERSION = 3;
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_SQL);
}
清单等可以,但我不明白为什么在某些设备上会出现SQLiteCantoPendDatabaseException。我希望有人能帮我解决这个问题?Thanx预先您正在将
数据库\u名称
设置为以返回的目录为根的路径
引用getExternalStorageDirectory()
的文档:
如果已装入此目录,则当前可能无法访问此目录
已从设备中删除,或
发生了其他一些问题
如果您真的不需要指定数据库文件的位置,那么您应该只指定文件名(例如,“MyDB”),Android框架将为您确定合适的路径
[更新]
通常,数据库(可能包含非常重要的数据,甚至可能包含敏感的用户信息)不存储在外部存储器中,因为:
如果要创建数据库的备份副本(并将其放入外部存储器),请参阅。为什么不发布任何代码?如何获取帮助检查这太快了:)现在我添加了代码:)您好,是的,但我的目的是使用getExternalStorageDirectory()将其存储在那里,例如/storage/emulated/0/database/databes.db3…因为这样用户每次都可以从此数据库进行备份。也许我会猜错误发生在某些设备上,因为创建数据库时路径不存在?
public class DBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = Environment.getExternalStorageDirectory() + "/database/database.db3";
private static final int DATABASE_VERSION = 3;
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_SQL);
}