使用简单的查询,使用 bindargs 可以正常工作,但是一旦我在查询中包含选择案例.....它总是失败“不能为这个 sql 传递 bindargs”,如果我测试所有的 '?'s替换为固定值,它编译并运行正常,因此参数绑定似乎无法处理嵌入在选择案例中的选择。这是真的?
我正在编译的查询是:
(SELECT CASE
WHEN ((SELECT _id FROM point2D WHERE x=? AND y=?) IS NULL ) THEN 0
ELSE (SELECT _id FROM point2D WHERE x=? AND y=? LIMIT 1))
并且表格设置为
create table if not exists point2D ( _id INTEGER PRIMARY KEY AUTOINCREMENT,
x REAL, y REAL )
我只想要一个已编译的查询,该查询返回现有匹配记录的键,或已知的“它不存在”值,但当然是一个简单的查询,例如
SELECT _id FROM point2D WHERE x=? AND y=? LIMIT 1
当没有找到任何东西时会导致 simpleQueryForLong 异常(这在 cpu 时间上非常昂贵)
我不能使用插入或更新,因为更新实际上用新行(因此是新的_id)替换了旧行,这搞砸了指向此的所有其他内容。