我有两个表,由以下语句创建:
create table maintable (_id integer primary key, name)
create table foreigntable (_id integer primary key, object, foreign key (object) references maintable(_id)
我想查询foreigntable
引用maintable
中引用特定对象的所有项目。我们假设id
中感兴趣的maintable
存储在objectId
中。
为什么以下代码没有返回结果?
Cursor dataCursor = database.query("foreigntable", null, "object=?", new String[] { Long.toString(objectId)}, null, null, null);
我使用以下查询获得结果:
Cursor dataCursor = database.rawQuery("select * from foreigntable where object=" + objectId, null);
什么也有效:
Cursor dataCursor = database.query("foreigntable", null, "object="+objectId, null, null, null, null);
答案 0 :(得分:1)
"object=?", new String[] { Long.toString(objectId)}
此代码将object
列中的值与字符串进行比较。
这种比较总是会失败,因为数字不是字符串。
虽然使用参数通常是一个好主意,但Android的数据库API只允许字符串,当你有一个数字时,你应该直接将它插入到SQL查询字符串中。