我有
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);
任何想法我怎么能这样做。
答案 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);
table
:myTable
columns
:由于它是SELECT *
,请保留为null
以获取所有列。
selection
:这是WHERE
没有WHERE
:id=100 OR id=200
selectionArgs
:这是您null
中的rawQuery()
。
groupBy
,having
,orderBy
:原始查询没有这些,请留下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;
}
}