Android的SQLite查询与多个地方

这是我目前的sqlite代码:

Cursor c = sqlDatabase.rawQuery("select docid as _id, recipeID from " + TABLE_RECIPE_NAME + " where " + KEY_ownerID + " = ? ", new String[] { ownerID}); 

它工作正常,但是当我尝试添加多个这样的事情:

 Cursor c = sqlDatabase.rawQuery("select docid as _id, recipeID from " + TABLE_RECIPE_NAME + " where " + KEY_ownerID + " = ?, " + KEY_partnerID + " = ?, " + KEY_advertiserID + " = ?, " + KEY_chefID + " = ?", new String[] { ownerID, partnerID, advertiserID, chefID }); 

它返回一个错误。 那么我如何处理多个?

Solutions Collecting From Web of "Android的SQLite查询与多个地方"

将查询更改为:

 Cursor c = sqlDatabase.rawQuery("select docid as _id, recipeID from " + TABLE_RECIPE_NAME + " where " + KEY_ownerID + " = ? AND " + KEY_partnerID + " = ? AND " + KEY_advertiserID + " = ? AND " + KEY_chefID + " = ?", new String[] { ownerID, partnerID, advertiserID, chefID }); 

可能你必须使用AND 。 你想要一个查询应该返回光标填充比较多个值的值。 所以,你只需要使用AND 。 而不是使用comma(,) 。 上面的答案似乎是正确的,但它只是缺乏解释。

您正在做的正确,但只需要在每个条件之间使用ANDOR关键字根据您的要求。 所以请尝试使用一次。

对多个WHERE子句使用ANDOR 。 如果需要逻辑分组或顺序,请使用括号。

 SELECT * FROM employees WHERE (last_name = 'Smith' AND first_name = 'Jane') OR (employee_id = 1); 

(资源)

注意

  • 这个补充的答案省略了Android代码格式,因为它使得SQL很难阅读和理解。 读者可以做他们自己的格式。