android:SQLite查询没有返回任何结果

时间:2014-05-20 14:48:38

标签: android sqlite android-sqlite

我正在构建一个使用SQLite数据库的Android应用。 对于这一项任务,我必须运行如下所示的查询:

 SELECT item.id, item.price, t1.quantity
 FROM item, (SELECT id, price
            FROM list
            WHERE list.state = 'sold') t1
 WHERE item.id = t1.id

到目前为止,我已经尝试过:

Cursor c = resolver.query(uriRawQuery, null, selection, null, null)

其中uriRawQuery用于告诉ContentProvider它应该执行db.rawQuery(selection, null)selection是一个类似于上述查询的字符串。

问题是没有数据返回Cursor。当我致电c.moveToFirst()时,我会false

奇怪的是,如果我在SQLite Manager中打开数据库文件并运行完全相同的查询,我会得到结果。

我知道我可以修改查询以在原始listitem表之间建立联接,但我发现它的效率不高。

任何想法都会非常感激,因为我已经花费了太多时间。

修改

我知道join是什么,我说的是,如果我这样做而不是使用整个list表,效率要高得多。

我忘记了一个非常重要的方面 WHERE子句看起来像

" WHERE list.state = 'sold' and list.name like '" + arg + "%'"

其中arg是一个字符串。

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题,我仍然不知道为什么会这样,但至少我让Cursor实际选择了行。

经过多次试验后,我考虑放弃上面的语法并写下来:

" WHERE list.state = 'sold' and list.name like ? "

并在

中移动参数
selectionArgs = new String[]{arg + "%"}

我会在接受答案之前等待一段时间,以防有人提供解释为什么即使两个查询看起来完全一样,也会得到不同的结果。