首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android SQLiteOpenHelper:如何刪除表格與資料庫

     編輯:程式設計綜合問答

問題背景

在 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() 重建。
  • 執行 DDL 語句(如 DROP TABLE)前確保沒有開啟的 Cursor 或交易未提交。
  • 若在 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);
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved