SQLite错误:'无法将文本值转换为数值。'

时间:2010-11-03 23:35:43

标签: sqlite air

我找到了解决办法,但我对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
);

0 个答案:

没有答案