如果存在另一个表,我正在尝试在数据库中删除表。

我使用此查询对表进行了备份:

ALTER TABLE AppProfile RENAME TO AppProfile_backup


现在,我想通过以下方式恢复备份表并删除AppProfile:

DROP TABLE AppProfile IF EXISTS TABLE AppProfile_backup
(ALTER TABLE AppProfile_backup RENAME TO AppProfile) IF NOT EXISTS AppProfile


但是,在“ IF”标记附近,两行都出现语法错误。

有关此问题的背景信息,我使用了Android中的SQLiteOpenHelper类。您可以通过调用[db_handler_instance] .getWritableDatabase()。execSQL(“ random query”)来在该环境中执行原始SQL。

最佳答案

用Java怎么做呢?您可以查询数据字典...



String sql = "SELECT 1 "
           + "  FROM sqlite_master  "
           + " WHERE type = 'table' "
           + "   AND name = 'AppProfile_backup'";

Cursor cursor = db.rawQuery(sql, null);


...并删除表(如果备份表已存在):

if (cursor.moveToNext())
    db.execSQL("DROP TABLE AppProfile;");
else
    db.execSQL("ALTER TABLE ...");

08-17 17:44