我在我的应用中使用SQLite数据库。对于特定操作,我想删除特定表中的多个(可能是一些,最多约一百个)条目。我尝试在deleteStuffLink()
循环中根据需要多次调用for
,并在deleteStuffLink()
方法中添加循环。这两种方式都导致只有15件商品的3秒钟挂起。
导致这种缓慢行为的原因是什么,我该如何解决?
普通删除方法
for (String s : nameArray) { deleteStuffLink(s); }
public void deleteStuffLink(String name) {
SQLiteDatabase db;
db = getWritableDatabase();
db.execSQL("DELETE FROM " + TABLE_LinkTable
+ " WHERE " + LT_COLUMN_NAME + "=\"" + name + "\";");
db.close();
}
合并循环
public void deleteAllStuffLink(ArrayList<String> nameArray) {
SQLiteDatabase db;
db = getWritableDatabase();
for (String s : nameArray) {
db.execSQL("DELETE FROM " + TABLE_LinkTable
+ " WHERE " + LT_COLUMN_NAME + "=\"" + s + "\";");
}
db.close();
}
答案 0 :(得分:3)
作为CommonsWare评论,
public void deleteAllStuffLink(ArrayList<String> nameArray) {
SQLiteDatabase db;
db = getWritableDatabase();
db.beginTransaction();
for (String s : nameArray) {
db.execSQL("DELETE FROM " + TABLE_LinkTable
+ " WHERE " + LT_COLUMN_NAME + "=\"" + s + "\";");
}
db.setTransactionSuccessful();
db.endTransaction();
db.close();
}