如何使用参数搜索数字?

时间:2014-09-21 14:35:02

标签: android sqlite

我有两个表,由以下语句创建:

    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);

1 个答案:

答案 0 :(得分:1)

"object=?", new String[] { Long.toString(objectId)}

此代码将object列中的值与字符串进行比较。 这种比较总是会失败,因为数字不是字符串。

虽然使用参数通常是一个好主意,但Android的数据库API只允许字符串,当你有一个数字时,你应该直接将它插入到SQL查询字符串中。