Android 从SD卡获取数据库时出现问题
我正在尝试读取存储在SD卡上的SQLite数据库。部分守则如下:Android 从SD卡获取数据库时出现问题,android,android-sqlite,android-sdcard,Android,Android Sqlite,Android Sdcard,我正在尝试读取存储在SD卡上的SQLite数据库。部分守则如下: public String getTables() { String dbFullPath = Environment.getExternalStorageDirectory().toString() + "/external_sd/database.db"; String query = "SELECT name from sqlite_master where type='table'"; SQLite
public String getTables() {
String dbFullPath = Environment.getExternalStorageDirectory().toString() + "/external_sd/database.db";
String query = "SELECT name from sqlite_master where type='table'";
SQLiteDatabase mDatabase = SQLiteDatabase
.openDatabase(dbFullPath, null, SQLiteDatabase.OPEN_READONLY
+ SQLiteDatabase.NO_LOCALIZED_COLLATORS);
Log.d(TAG, "Is db open? " + mDatabase.isOpen());
Cursor cursor = mDatabase.rawQuery(query, null);
String tables = cursor.getString(0);
cursor.close();
return tables;
}
但是,当运行此代码时,我得到以下错误
java.lang.RuntimeException:无法启动活动组件信息{…}:android.database.sqlite.SQLiteException:无法打开数据库文件:,编译时:从sqlite_master中选择名称,其中type='table'
在Cursor Cursor=mDatabase.rawQuery(query,null)上代码>行
调试日志返回数据库是否打开?true
,表示路径正确,数据库已成功打开?不起作用:(仍然是相同的问题:原因:android.database.sqlite.SQLiteException:无法打开数据库文件:,编译时:从sqlite_master中选择名称,其中type='table'按名称排序asc
检查您在查询中指定的字段,即类型和名称是否存在于sqlite_master中?是的,我用另一个应用程序打开了数据库,然后e query工作正常。我想我打开数据库时有点错误,但调试日志表明我正确打开了数据库。对不起,我的意思是,两个查询都可以与另一个代码一起工作。但由于某些原因,它不能与此代码段一起工作。因此问题不在查询中。请尝试另一个语句,然后告诉我会发生什么。@Sajmon同样的事情,这是错误的应该是使用任何有效数据库的简单调试查询。
Cursor cursor = mDatabase.query(sqlite_master, new String[] { "name" }, "type=" + table, null,
null, null, "name asc");