如何在where语句中使用or子句实现db.query代码

时间:2014-03-22 07:30:45

标签: android sqlite

我有

db.rawQuery("SELECT * FROM myTable WHERE id=100 OR id=200",null);

我希望它转换为

db.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy);

任何想法我怎么能这样做。

3 个答案:

答案 0 :(得分:1)

使用: -

String selection = <column name> + "=? OR " + <column name> + "=?";
String []selectionArgs={val1,val2};

然后将这些应用于: -

db.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy);

答案 1 :(得分:1)

db.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy);
  • tablemyTable

  • columns:由于它是SELECT *,请保留为null以获取所有列。

  • selection:这是WHERE没有WHEREid=100 OR id=200

  • selectionArgs:这是您null中的rawQuery()

  • groupByhavingorderBy:原始查询没有这些,请留下null

因此,机械地将查询包装起来以使用query()便捷方法,它变为

Cursor c = db.query("myTable", null, "id=100 OR id=200", null, null, null, null);

答案 2 :(得分:0)

以下是一个示例类db,其方法rawQuery在收到所有必需参数后返回查询。如果这不是您想要的,请告诉我。感谢。

class db{

    private String query;

    static String rawQuery (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy){

        this.query = "SELECT " + getColumns(columns) +
                    " FROM " + dbColumn + 
                    " WHERE " getSelectionArgs(selectionArgs) +
                    " GROUP BY " + groupBy +
                    " HAVING " + having +
                    " ORDER BY " + orderBy +
                    "; ";
        return query;

    }
    private String getColumns(String[] arr){
        String cols = "";
        for(int i = 0; i < arr.length - 1; i++){
            cols += arr[i] + ", ";
        }
        cols += arr[arr.length-1];

        return cols;
    }

    private String getSelectionArgs(String[] arr){
        String args = "";
        for(int i = 0; i < arr.length - 1; i++){
            args += arr[i] + ", ";
        }
        args += arr[arr.length-1];

        return args;
    }

}