我試圖讀取存儲在SDCard上的SQLite數據庫。該部分代碼如下:從SD卡獲取數據庫的問題
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:無法打開數據庫文件:,在編譯:從SQLITE_MASTER SELECT name其中類型= '表'
在Cursor cursor = mDatabase.rawQuery(query, null);
線。
調試日誌返回Is db open? true
,這意味着我獲得了正確的路徑並且數據庫已成功打開?
嘗試另一種說法會發生什麼,然後讓我知道。 – Sajmon
@Sajmon同樣的事情,這應該是一個簡單的調試查詢,適用於任何有效的數據庫。 – Muz