【发布时间】:2014-09-26 23:35:57
【问题描述】:
我有一个自定义的 executeSql 语句,我在其中传递了一组查询和一组参数,以使其在单个事务中运行得更快。当它执行时,我可以看到每个 executeSql 的 rowsAffected 正在正确填充(我得到一些“0 条记录受影响”,还有一些“1 条记录受影响”)。
在我为自己确认输出后,我想跟踪总共更新了多少条记录。所以我只是添加一个计数器,然后在循环完成后输出该值。但最终结果显示我每次都有 0 条记录受到影响。
这里有什么问题?
ExecuteQueryWhereQueryAndParamsBothArrays: function (queryArray, paramsArray, success, fail) {
var hasError = false;
var counter = 0;
$rootScope.db.transaction(function (tx) {
for (var i = 0; i < paramsArray.length; i++) {
var query = queryArray[i];
var params = paramsArray[i];
tx.executeSql(query, params, function (tx, results) {
window.logger.logIt("results.rowsAffected: " + results.rowsAffected); // this is showing the correct results
counter += results.rowsAffected;
}, function() {
hasError = true;
onError(tx, r);
});
}
});
if (hasError) {
fail();
} else {
window.logger.logIt("successCounter: " + counter); // this always displays 0 (records)
success(counter);
}
},
【问题讨论】:
标签: javascript sql angularjs sqlite cordova