sql - 如果存在另一个表,如何删除数据库中的表?

标签 sql sqlite

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

我使用此查询备份了表:

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 ...");

关于sql - 如果存在另一个表,如何删除数据库中的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18113383/

相关文章:

asp.net - LINQ 和使用 ListView 分页

php - 从自己的 CMS 中的 wp_postmeta 提取数据

c# - 将 SQL 转换为 Linq 查询

ios - CoreData vs. SQLite vs. 自定义实体和 pLists

mysql - 判断MySQL中是INSERT还是UPDATE;先查询还是依赖约束错误?

sql - 在动态查询中从另一个临时表创建临时表

android - 将 blob 数据插入 android 上的 sqlite 时出错

python - 如何从 sqlite 中获取一个 µ 字符并放到网页上?

c# - LINQ GroupBy 与 SQLite.EF6 导致 'APPLY joins are not supported' 异常

sql - 如何更改 sqlite3 数据库的排序规则以不区分大小写排序?