使用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/