如何使用游标执行连接?

时间:2016-06-08 13:47:58

标签: android sql join sqlite cursor

在我的Android应用程序中,我使用Cursors / ContentValues来执行诸如从Sqlite3数据库获取结果,然后迭代光标/填充我的对象/等等。这很容易执行基本的创建,检索,更新和删除操作。

但是如果我想执行一个依赖于连接的更复杂的查询呢?我是否基本上必须像创建表查询一样预先编写连接查询,然后以某种方式使用Cursor?这里接受的做法是什么?

示例连接查询:

SELECT WIDGETS.*
FROM WIDGETS INNER JOIN WIDGET_CATEGORIES 
ON WIDGETS.CATEGORY_ID = WIDGET_CATEGORIES.ID
WHERE WIDGET_CATEGORIES.ACCOUNT_ID=5;

1 个答案:

答案 0 :(得分:1)

鉴于您的样本查询& WIDGET_CATEGORIES.ACCOUNT_ID是唯一会在您的查询中更改的变量,您可以使用rawQuery(SQL statement, selectionArguments)

db.rawQuery("SELECT " + WIDGETS.* + 
" FROM " + TABLE_WIDGETS + " INNER JOIN " + WIDGET_CATEGORIES +
" ON " + WIDGETS.CATEGORY_ID + " = " + WIDGET_CATEGORIES.ID +
" WHERE " + WIDGET_CATEGORIES.ACCOUNT_ID + " = ?;", new String[]{"5"});

这将返回cursor,其中包含您要查找的预期join信息。