在 Android 開發中,繼承 SQLiteOpenHelper 管理資料庫時,常需要在特定情境下刪除資料表或整個資料庫。例如使用者點擊按鈕時清除資料,或是版本升級時重建結構。
透過 SQLiteDatabase 物件的 execSQL() 執行 DROP TABLE IF EXISTS 陳述式即可。通常在 onUpgrade() 中這樣做:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);
onCreate(db); // 重新建立資料表
}
若需在一般方法中刪除表格,先取得可寫入的資料庫實例:
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);
db.close();
Android 將資料庫儲存為檔案,路徑通常為 /data/data/<package_name>/databases/<db_name>。可直接呼叫 Context.deleteDatabase(String name) 刪除:
context.deleteDatabase(DATABASE_NAME);
或手動刪除檔案(不建議,除非特殊需求):
File dbFile = context.getDatabasePath(DATABASE_NAME);
if (dbFile.exists()) dbFile.delete();
getWritableDatabase() 或 getReadableDatabase() 會觸發 onCreate() 重建。SQLiteOpenHelper 子類別外部操作,需持有有效的 Context。public void deleteTable(Context context) {
DatabaseHandler helper = new DatabaseHandler(context);
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("DROP TABLE IF EXISTS " + DatabaseHandler.TABLE_CONTACTS);
db.close();
// 若需立即重建,可呼叫 helper.onCreate(db);
}