Android 从SD卡获取数据库时出现问题

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

我正在尝试读取存储在SD卡上的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");