SQLiteDatabase query 和 rawQuery 的区别

简介:
<span style="font-size:12px;">Cursor cursor = db.rawQuery("select name from *** where id=?", new String[]{"1"}); 
Cursor cursor = db.query("***", new String[]{"name"}, "id=?", new String[]{"1"}, null, null, null);</span>

上面是两个分别是query和rawQuery的查询语句,主要区别是rawQuery是直接使用SQL语句进行查询的,也就是第一个参数字符串,在字符串内的“?”会被后面的String[]数组逐一对换掉;而query函数是Android自己封装的查询API:它的API文档如下:

<span style="font-size:12px;">public Cursor  query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)  
Query the given table, returning a Cursor over the result set. 
table  
The table name to compile the query against.  

columns  
A list of which columns to return. Passing null will return all columns, which is discouraged to prevent reading data from storage that isn't going to be used.  
selection  
A filter declaring which rows to return, formatted as an SQL WHERE clause (excluding the WHERE itself). Passing null will return all rows for the given table.  

selectionArgs  
You may include ?s in selection, which will be replaced by the values from selectionArgs, in order that they appear in the selection. The values will be bound as Strings.  

groupBy  
A filter declaring how to group rows, formatted as an SQL GROUP BY clause (excluding the GROUP BY itself). Passing null will cause the rows to not be grouped.  

having  
A filter declare which row groups to include in the cursor, if row grouping is being used, formatted as an SQL HAVING clause (excluding the HAVING itself). Passing null will cause all row groups to be included, and is required when row grouping is not being used.  

orderBy  
How to order the rows, formatted as an SQL ORDER BY clause (excluding the ORDER BY itself). Passing null will use the default sort order, which may be unordered.  


Returns 
?A Cursor object, which is positioned before the first entry. Note that Cursors are</span>
而后者query对比前者来讲就有一个好处,前者rawQuery你在写入SQL语句的时候,有可能写错了或者写漏了什么单词拼写错误的时候他会出错,而后者相对来讲出错的机率就比较小。最后调的都是同一个方法 rawQueryWithFactory。

目录
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
JPQL-Query查询实例详解
JPQL-Query查询实例详解
64 0
|
机器学习/深度学习 自然语言处理 算法
DL应用:query生成和query推荐
引言  在机器翻译、图片描述、语义蕴涵、语音识别和文本摘要中,序列到序列的问题已经有太多大牛研究了,也取得了很多突破。谷歌的Attention is all you need[1],舍弃并超越了主流的rnn与cnn序列建模框架,刷出了新的state of the art,这种大胆创新的精神值得我们学习。
15568 1
|
1月前
|
Java
开发指南004-@Query参数写法
JPA的Query注解和函数参数的绑定有多种写法
|
SQL 数据库 数据库管理
sql数据定义语句(cascade,set,null,no action的区别)
sql数据定义语句(cascade,set,null,no action的区别)
240 0
|
自然语言处理
查询问题---queryparse深入理解
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里
188 0
One order search dynamic sql statement生成位置
One order search dynamic sql statement生成位置
101 0
One order search dynamic sql statement生成位置
|
消息中间件 SQL 关系型数据库
【DB吐槽大会】第69期 - PG 不支持update | delete limit语法
大家好,这里是DB吐槽大会,第69期 - PG 不支持update | delete limit语法
|
机器学习/深度学习 算法
query语义改写
1. 问题背景   商品检索的主要的问题还是在于用户query和商品描述之间存在GAP,特别是中长尾query。把问题分成以下几种类型: 多种描述:划痕笔/补漆笔/修补笔/点漆笔 信息冗余:   冰箱温控器温度控制==冰箱温控器 属性检索: 118冰箱、60寸液晶电视机4k高清智能60曲面 宽泛意图: 超美吊灯、大容量冰箱 2.所做工作   query改写的目标空间可以分为文本空间和意图ID空间两种类型:文本空间包含词、短语、query,意图ID空间主要包括pidvid、性别年龄尺码等自定义tag、一些语义聚合的标签如:"奢侈","可爱"等。
9907 0