【问题标题】:Remove records from db using NSMutableArray使用 NSMutableArray 从数据库中删除记录
【发布时间】:2012-05-16 18:25:38
【问题描述】:

所以我想从我的数据库中删除一系列对象。

它们暂时存储在 NSMutableArray 中。

这是我当前循环的代码。

+(BOOL) removeLogs:(Logs *)logs {
Database *db = [DatabaseManager sharedDatabaseManager].db;

sqlite3_exec(db.dataBase, "BEGIN", 0, 0, 0);
const char *sqlRemoveLogs = "DELETE FROM logs WHERE LogID = ?";
if(sqlite3_prepare_v2(db.dataBase, sqlRemoveLogs, -1, &removeLogStatement, NULL) != SQLITE_OK) {
    NSLog(@"Failed to prepare statement: %s", sqlite3_errmsg(db.dataBase));
    return NO;
}

for(int i = 0; i < logs.getLogs.count; i++) {
    sqlite3_bind_int(removeLogStatement, 1, [logs getLogAtIndex:i].logId);

    if(SQLITE_DONE != sqlite3_step(removeLogStatement)) {
        NSLog(@"Failed to remove logs: %s", sqlite3_errmsg(db.dataBase));
        return NO;
    }

    sqlite3_clear_bindings(removeLogStatement);
    sqlite3_reset(removeLogStatement);
}

sqlite3_finalize(removeLogStatement);

NSLog(@"Logs removed");
return YES;
}

我想以我现在必须使用 for 循环遍历它们的形式获得它。 对 sqlite 使用以下语句:

DELETE FROM logs WHERE LogID IN ?

如何填写这个“?”与 NSMutableArray? 甚至有可能做到这一点吗?

在此先感谢

编辑: “日志”对象是一个 NSMutableArray

【问题讨论】:

    标签: objective-c sqlite nsmutablearray


    【解决方案1】:

    在logIds 中创建一个您要删除的NSArray 并将其保存在logIdsToDeleteArray 中。

    然后按照以下步骤操作;

    第一步:

    NSString * logIdsToDelete = [[logIdsToDeleteArray valueForKey:@"description"] componentsJoinedByString:@","];
    

    结果:数组元素组合成一串逗号分隔的元素。

    第 2 步:

    NSString *logIdsToDelete = [NSString stringWithFormat:@"{%@}", logIdsToDelete];
    

    结果:{element1, element2, element 3 ..} 作为NSString

    第 3 步:

    NSString *s = [NSString stringWithFormat:@"DELETE FROM logs WHERE LogID IN %@", logIdsToDelete];
    

    结果:需要的sql语句为NSString

    第 4 步:

    const char *sql = [s cStringUsingEncoding:NSASCIIStringEncoding];
    

    结果:sqlite3 兼容const char

    你会得到你想要执行的 sql 语句,然后像你在代码 sn-p 中所做的那样继续。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-12
      • 2016-12-10
      • 2018-03-16
      • 1970-01-01
      • 1970-01-01
      • 2017-07-08
      • 1970-01-01
      相关资源
      最近更新 更多