从 SQLite 数据库中删除需要很长时间,从而导致挂起



我在应用程序中使用SQLite数据库。对于特定操作,我想删除特定表中的多个(可能是相当多的,最多大约一百个)条目。我尝试通过在 for 循环中根据需要多次调用 deleteStuffLink() 并在 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();
}

正如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();
}

最新更新