0

SDCard に保存されている 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: アクティビティ ComponentInfo{...} を開始できません: android.database.sqlite.SQLiteException: データベース ファイルを開けません: 、コンパイル中: type='table' の sqlite_master から名前を選択します

ライン上Cursor cursor = mDatabase.rawQuery(query, null);

デバッグ ログに が返されますIs db open? true。これは、正しいパスを取得し、データベースが正常に開かれたことを意味します。

4

1 に答える 1

0
Cursor cursor = mDatabase.query(sqlite_master, new String[] { "name" }, "type=" + table, null,
                null, null, "name asc");
于 2013-03-29T09:32:40.297 に答える