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
。これは、正しいパスを取得し、データベースが正常に開かれたことを意味します。