我找到了解决办法,但我对Adobe Air和SQLite遇到的问题感到非常困惑。我相信在开发过程的早期工作正常的UPDATE
查询突然失败,错误为details:'could not convert text value to numeric value.', operation:'execute', detailID:'2300'
。几个小时后,我发现如果我在查询中包含一个非常不相关的列,将其设置为任意值,问题就会消失。幸运的是,这并没有以任何有意义的方式影响业务逻辑,所以我将保持原样。但是,我厌恶这样的神秘。谁能想到可能发生的事情?
(编辑:对不起,我在我的代码中犯了一个错误。最后两个查询在我的原始帖子中是相同的。事实上,UPDATE
查询仅在我添加locked = null
或{时才有效{1}}查询。如果我没有设置此值,查询将失败。我做了一切我可以解决的问题,包括重建数据库文件。)
以下是表格定义:
locked = 0
此查询始终有效:
CREATE TABLE cars (
car_id INTEGER PRIMARY KEY AUTOINCREMENT DEFAULT NULL,
cargroup_id NUMERIC,
starting_ordinal NUMERIC,
ending_ordinal NUMERIC,
locked NUMERIC
);
此查询因上述错误([edit])而失败:
var query = new Query(
"UPDATE cars SET locked = (car_id = ?) WHERE cargroup_id = ?",
[intCarId,intCargroupId],
success,failure
);
我通过将查询更改为:
来解决问题var query = new Query(
"UPDATE cars SET starting_ordinal = ?, ending_ordinal = ?, cargroup_id = ? WHERE car_id = ?",
[
parseInt(objPayout.starting_ordinal,10),
parseInt(objPayout.ending_ordinal,10),
parseInt(objPayout.cargroup_id,10),
parseInt(objPayout.car_id,10)
],
success,failure
);