当我的Android应用程序有新数据可用时,我需要完全删除其中一个SQLite数据库表中的所有当前条目,并用新数据替换它们。做这个的最好方式是什么?
最好运行
DELETE * FROM my_table
或
为数据库中的每一行运行delete
查询
或运行
database.execSQL(DATABASE_DROP_MY_TABLE);
database.execSQL(DATABASE_CREATE_MY_TABLE);
DATABASE_DROP_MY_TABLE
是SQL放弃表而DATABASE_CREATE_MY_TABLE
是
SQL再次创建表而没有条目。
然后按照其中一个插入新数据。
当然,我可能还有其他方法可以做到这一点。
答案 0 :(得分:1)
假设你正在使用SQLiteOpenHelper,你可以关闭db,删除整个文件并重新创建db:
class MyDatabase extends SQLiteOpenHelper {
public static final String DB_NAME = "wat";
public MyDatabase(Context context) {
super(context, DB_NAME, null, CURRENT_VERSION);
}
}
dbHelper.close(); // dbHelper is your MyDatabase instance
context.deleteDatabase(DB_NAME);
SQLiteDatabase db = dbHelper.getWritableDatabase() // will create empty db
此解决方案的好处在于,在向架构添加新表时,不必更新表重置代码。它还可以正确地重新创建您可能已添加的索引。
答案 1 :(得分:0)
我不会使事情变得复杂,只需使用DROP TABLE语句删除表即可。正如doc 所说:
SQLite DROP TABLE语句用于删除表定义以及该表的所有关联数据,索引,触发器,约束和权限规范。
你会有干净的盘子,然后再次创建表并添加你的新数据。