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

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

  • 在Android上的SQLite中查询和使用游标
  • 如何在没有root的Android设备上检查数据库
  • 太多的绑定参数。 提供了5个参数,但声明需要4个参数
  • 分配游标时内存不足
  • SQLiteOpenHelper无法调用onCreate?
  • 更改SQLite数据库版本号
  • 获取更新的行从Android中的SQLite使用原始查询计数?
  • Android:我可以为多个数据库文件使用一个SQLiteOpenHelper类吗?
  • 将查询更改为:

     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很难阅读和理解。 读者可以做他们自己的格式。