使用
之间有什么区别rawQuery(String sql, String[] selectionArgs)
和
query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)
在Android中?
根据我的理解,query()
方法应该依次转换其参数以形成sql查询。那么,rawQuery()
方法会比query()
提供更好的效果吗?
答案 0 :(得分:1)
要执行查询,有两种方法: 执行db.rawQuery方法 执行db.query方法 执行原始查询以检索所有部门:
Cursor getAllDepts()
{
SQLiteDatabase db=this.getReadableDatabase();
Cursor cur=db.rawQuery("SELECT "+colDeptID+" as _id,
"+colDeptName+" from "+deptTable,new String [] {});
return cur;
}
rawQuery方法有两个参数: 字符串查询:select语句 String [] selection args:如果WHERE子句包含在select语句中的参数 笔记 查询的结果在Cursor对象中返回。 在select语句中,如果表的主键列(id列)的名称不是_id,则必须使用SELECT [Column Name]形式的别名作为_id,因为Cursor对象始终期望主要key列的名称为_id,否则将引发异常。 执行查询的另一种方法是使用db.query方法。从视图中选择某个部门中所有员工的查询将如下所示:
public Cursor getEmpByDept(String Dept) {
SQLiteDatabase db=this.getReadableDatabase();
String [] columns=new String[]{"_id",colName,colAge,colDeptName};
Cursor c=db.query(viewEmps, columns, colDeptName+"=?",
new String[]{Dept}, null, null, null);
return c;
}
db.query具有以下参数: 字符串表名称:要对其运行查询的表的名称 String [] columns:查询的投影,即要检索的列 String WHERE子句:where子句,如果没有传递null String [] selection args:WHERE子句的参数 字符串分组:指定group by子句的字符串 String Having:一个指定HAVING子句的字符串 字符串顺序依据:字符串Order By by clause