2

我想更新多条记录(DBAccess ORM)。根据特定字段的条件。就像 set city = "Goa" 其中 name = "atul"。

请查看以下快速代码,它工作正常。但是如何在不使用 for 循环的情况下通过单个查询来做到这一点。

func updateRecordsByName(userName: String) {

    //like userName = atul;
    let userArr : DBResultSet = User.query().whereWithFormat("name = %@", withParameters:[userName]).fetch();

    for data in userArr {

        (data as! User).city = "Goa";

        (data as! User).commit();
    }
}

请提出完美的解决方案以减少行数/循环数并改进上述查询代码。

4

1 回答 1

0

除了执行本质上很危险的原始 SQL 之外,也没有其他办法,尤其是当缓存和打开的对象不知道 SQLite 中已更新的值时。

循环对象有问题吗?如果它的性能,然后将更新包装在事务中,这将加速它。

    DBTransaction.transaction({ 
         // put all your writes here

         for data in userArr {
             (data as! User).city = "Goa";
             (data as! User).commit();
         }
    }) { 
         // rollback
    }

也升级到 SharkORM,因为它现在已经从 DBAccess 接管:

http://sharkorm.com , https://github.com/sharksync/sharkorm

如果需要,您可以随时向查询模块添加更新功能。或者通过问题提出功能请求。

于 2016-07-20T13:27:47.427 回答