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

Pra*_*nna 7 database performance android

使用a有什么区别

rawQuery(String sql, String[] selectionArgs)
Run Code Online (Sandbox Code Playgroud)

query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)
Run Code Online (Sandbox Code Playgroud)

在android?

从我的理解query()方法应该反过来转换其参数,以形成一个SQL查询.那么,rawQuery()方法会给我们带来更好的表现query()吗?

Sav*_*tel 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;
  }
Run Code Online (Sandbox Code Playgroud)

rawQuery 方法有两个参数: String query:select 语句 String[] Selection args:select 语句中包含 WHERE 子句时的参数 注释 查询结果在 Cursor 对象中返回。在 select 语句中,如果表的主键列(id 列)的名称不是 _id,则必须使用 SELECT [Column Name] as _id 形式的别名,因为 Cursor 对象始终期望主键列键列的名称为_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;
  }
Run Code Online (Sandbox Code Playgroud)

db.query 有以下参数: String 表名称:对 String [ ] 运行查询的表的名称 columns:查询的投影,即要检索的列 String WHERE 子句:where 子句,如果没有通过null String [ ] Selection args: WHERE 子句的参数 String Group by: 指定 group by 子句的字符串 Stringhaving: 指定 HAVING 子句的字符串 String Order by: 字符串 Order By 子句

  • 这根本没有回答问题 (8认同)