Android中的query()和rawQuery()方法之间的性能差异

时间:2014-02-22 17:06:47

标签: android database performance

使用

之间有什么区别
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()提供更好的效果吗?

1 个答案:

答案 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