android - Android 中 query() 和 rawQuery() 方法的性能差异

标签 android database performance

使用a有什么区别

rawQuery(String sql, String[] selectionArgs)

query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)

在安卓中?

根据我的理解,query() 方法应该依次将其参数转换为 sql 查询。那么,rawQuery() 方法会给我们带来比 query() 更好的性能吗?

最佳答案

要执行查询,有两种方法: 执行 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 方法有两个参数: 字符串查询:选择语句 String[] selection args:选择语句中包含 WHERE 子句时的参数 笔记 查询的结果在 Cursor 对象中返回。 在 select 语句中,如果表的主键列(id 列)的名称不是 _id,则必须使用 SELECT [Column Name] as _id 形式的别名,因为 Cursor 对象始终期望主键键列的名称为 _id,否则会抛出异常。 执行查询的另一种方法是使用 db.query 方法。从 View 中选择某个部门的所有员工的查询如下所示:

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 Table Name:要对其运行查询的表的名称 String [ ] columns:查询的投影,即要检索的列 字符串WHERE子句:where子句,如果没有就传null String [ ] selection args:WHERE子句的参数 String Group by:指定分组依据的字符串 String Having:指定 HAVING 子句的字符串 String Order By:一个字符串Order By by子句

关于android - Android 中 query() 和 rawQuery() 方法的性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21957467/

相关文章:

java - Android 应用程序类全局实例或静态

c++ - MaxLocksPerFile JET4.0注册表值的最大值是多少

c++ - 将 std::strings 插入到 std::map

performance - Web 服务和套接字编程 - 本地更快

javascript - Underscore.js 包装回调效率

带有图片的 Android 推特推文

android - Kotlin Gradle 问题

android - MyActivity 类型未定义方法 getFragmentManager()

database - 如何在 Prolog 中为变量(如字符串)分配多个值?

python - 为什么我无法安装 Cassandra 驱动程序