我想更新多条记录(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();
}
}
请建议完美的解决方案,以减少行数/循环次数并改进上述查询代码。
答案 0 :(得分: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
如果需要,您可以随时向查询模块添加更新功能。或者通过问题提出功能请求。