我正在使用ContentProvider。我的SQLiteOpenHelper类包含方法
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + table1);
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + table2);
onCreate(sqLiteDatabase);
}
说我处在一种我不记得桌子名称的情况下(我以某种方式丢失了它们。和我一起玩)。如何从方法onUpgrade
中删除所有这些内容?我看到提到
PRAGMA writable_schema = 1;
delete from sqlite_master where type in ('table', 'index', 'trigger');
PRAGMA writable_schema = 0;
但我不知道如何将其应用于onUpgrade
方法。
答案 0 :(得分:3)
您可以在升级方法中编写以下代码。
不确定如何在onUpgrade中使用drop table查询。
试试这个希望您可以通过使用以下代码获得任何想法。
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String alterTableQuery = "ALTER TABLE " + TABLE_NAME + " ADD COLUMN " + COULMN_NAME + " INT DEFAULT 0 ";
db.execSQL(alterTableQuery);
}
还有一种方法可以使用drop all table替换数据库,然后调用onCreate方法。
您可以使用以下代码。
public void deleteall(){
SQLiteDatabase db = this.getWritableDatabase();
Cursor c = db.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);
do
{
db.delete(c.getString(0),null,null);
}while (c.moveToNext());
}