我正在尝试从数据库中选择一些数据,我有两段代码可以做到这一点:
cursor = builder.query(db,
new String[]{"col1", "col2", "col3"},
"id = ?", new String[]{getSID(db)}, null, null, null);
和
cursor = builder.query(db,
new String[]{"col1", "col2", "col3"},
"id = " + getSID(db), null, null, null, null);
它们之间的区别在于,根据文档,第一个似乎更正确,但它也不起作用 - 光标为空。而不是第二个 - 我正在获取我需要的所有数据。
因此,我尝试使用数据库副本在我的 PC 上执行不同的 SQL 查询,这就是我所拥有的:
SELECT col1, col2, col3 FROM SomeTables WHERE (id = '42')
这个不起作用(这个查询显然等于查询,由第一个代码示例生成)
SELECT col1, col2, col3 FROM SomeTables WHERE (id = 42)
这个工作正常(等于从第二个代码示例查询)。
据我所知,SQLite 应该自动执行类型转换,但是出了点问题,我不知道为什么。您对如何修复第一个代码示例有任何想法吗?(或者,也许,数据库?)
如果重要的话,这里是带有字段CREATE
的表的简化脚本:id
CREATE TABLE SomeTable ( ID PRIMARY KEY, col1, col2, [...] )
UPD:顺便说一下,getSID(db) 返回字符串对象。