我有一个包含四个字段的表:
我想获取RegionName(Pune,Delhi)或ProjectName(TPQ)的数据 我的预期结果是Checklist4,checklist1和checklist3。
如何为此编写SQLite查询?
答案 0 :(得分:2)
我认为您的主要问题是SQL查询,您实际上是指使用" OR"关键字而不是" AND"就像你在脑海里一样......
" OR"关键字将返回满足任何条件的结果,因此RegionName可以是两个值之一(Pune,Delhi)或ProjectName可以是TPQ。
相反," AND"关键字将返回满足所有条件的结果。在你的表中,为了返回一个结果,你应该有一个RegionName为" Pune"并且ProjectName是" TPQ"。
尝试以下假设您的表被调用" TableName":
Cursor c = myDatabase.rawQuery("SELECT CheckListName from TableName where RegionName IN ('Pune', 'Delhi') OR ProjectName ='TPQ'", null);
答案 1 :(得分:0)
另一种查询语法(我更喜欢)是:
String[] params = {"Pune", "Delhi", "TPQ"};
String query = "SELECT CheckListName FROM YourTableName WHERE RegionName IN (?, ?) OR ProjectName =?";
Cursor cur = db.rawQuery(query, params);
只需将YourTableName
替换为您的桌子的实际名称。
这不仅自动处理字符串值(通过添加单引号和加倍撇号),还可以对抗SQL注入。
注意:参数的顺序是位置。这意味着第一个占位符(?
)将被参数数组中的第一个元素替换,依此类推。