获取可写数据库实例
通过 SQLiteDatabase
对象操作数据库,需调用 getWritableDatabase()
方法。
执行 SQL 删除语句
使用 execSQL()
方法执行 DROP TABLE
语句。
处理异常
若表不存在会抛出 SQLiteException
,建议捕获异常或提前检查表是否存在。
// 获取数据库实例(假设已创建 SQLiteOpenHelper 子类) SQLiteDatabase db = dbHelper.getWritableDatabase(); // 删除表(需确保表名正确) try { db.execSQL("DROP TABLE IF EXISTS table_name;"); // 推荐添加 IF EXISTS 避免异常 } catch (SQLiteException e) { Log.e("DatabaseError", "删除表失败: " + e.getMessage()); }
场景 | 说明 |
---|---|
表不存在时 | 使用 DROP TABLE IF EXISTS 避免抛出异常 |
多表删除 | 按依赖顺序删除(如外键关联的表需先删除依赖表) |
数据库版本升级 | 在 onUpgrade() 方法中执行删除操作,并更新 VERSION |
主线程操作风险 | 数据库操作需在子线程执行,避免阻塞 UI |
// 查询表是否存在 Cursor cursor = db.rawQuery( "SELECT name FROM sqlite_master WHERE type='table' AND name='table_name';", null ); boolean tableExists = cursor.getCount() > 0; cursor.close();
解答:
按依赖顺序依次执行 DROP TABLE
语句。
String[] tables = {"table1", "table2", "table3"}; for (String table : tables) { db.execSQL("DROP TABLE IF EXISTS " + table); }
解答:
在删除表后立即执行 CREATE TABLE
语句。
db.execSQL("DROP TABLE IF EXISTS users;"); db.execSQL("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT);");
需确保新表结构与原表兼容,或在删除前备份数据