Android 中数据库查询方法 query() 中的 selectionArgs 的用法

原创 2009年12月09日 13:11:00

Android 中涉及数据库查询的地方一般都会有一个 query() 方法,而这些 query 中有大都(全部?)会有一个参数 selectionArgs,比如下面这个 android.database.sqlite.SQLiteDatabase.query():

 

    selection 参数很好理解,就是 SQL 语句中 WHERE 后面的部分,即过滤条件, 比如可以为 id=3 AND name='Kevin Yuan' 表示只返回满足 id 为 3 且 name 为 "Kevin Yuan" 的记录。

    再实际项目中像上面那样简单的“静态”的 selection 并不多见,更多的情况下要在运行时动态生成这个字符串,比如

 

在这种情况下就要考虑一个字符转义的问题,比如如果在上面代码中传进来的 name 参数的内容里面有单引号('),就会引发一个 "SQLiteException syntax error .... "。

     手工处理转义的话,也不麻烦,就是 String.replace() 调用而已。但是 Android SDK 为我们准备了 selectionArgs 来专门处理这种问题:

 

也就是说我们在 selection 中需要嵌入字符串的地方用 ? 代替,然后在 selectionArgs 中依次提供各个用于替换的值就可以了。在 query() 执行时会对 selectionArgs 中的字符串正确转义并替换到对应的 ? 处以构成完整的 selection 字符串。 有点像 String.format()。

    不过需要注意的是 ? 并不是“万金油”,只能用在原本应该是字符串出现的地方。比如下面的用法是错误的

 

 

 

Android 中数据库查询方法query()中的selectionArgs的用法

Android 中涉及数据库查询的地方一般都会有一个 query() 方法,而这些 query中有大都(全部?)会有一个参数 selectionArgs,比如下面这个android.database....
  • eustoma
  • eustoma
  • 2011年08月16日 07:22
  • 8403

Android 数据查询query函数参数解析

转自:http://notfatboy.iteye.com/blog/653357首先我们假设我们有如下表格,表格名称“Employees”: IdLastNameFirstNameAddressCi...
  • scorplopan
  • scorplopan
  • 2011年04月05日 22:15
  • 69988

Cursor query详解

SQLiteDatabase的rawQuery()用于执行select语句,使用例子如下: SQLiteDatabase db= ....; Cursor cursor = db.rawQuery(...
  • lyq563874257
  • lyq563874257
  • 2016年03月29日 18:32
  • 1302

Android数据库中查找一条数据 query方法详解

public Cursor query(String table,String[] columns,String selection,String[] selectionArgs,String gro...
  • chaozhung
  • chaozhung
  • 2013年06月05日 09:47
  • 9735

android之存储篇_SQLite数据库_让你彻底学会SQLite的使用

SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么。 例如:可以在Integer类型的字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中...
  • jason0539
  • jason0539
  • 2013年08月24日 07:51
  • 177904

Android实现查询数据库,把数据库内容显示到屏幕

首先,是布局文件,非常的简单,一个可以滑动的ScrollView包裹一个线性布局,线性布局里面无内容 ...
  • zyx520ytt
  • zyx520ytt
  • 2016年05月08日 18:23
  • 7695

Android自带SQLite数据库查询语句query的用法

金证职考 2017-02-26 19:39 今天在调试APP的时候,用到了SQLite的query 查询语句,去年编码时间紧没认真琢磨query的用法,当时用到query时为了省事省时直接用下面的:...
  • u011277123
  • u011277123
  • 2017年04月07日 16:24
  • 1661

Android里的查询数据库语句

Notepadv1 这个例子中,我想在表中增加一列,就叫body2吧。NotesDbAdapter中添加:public static final String KEY_BODY2 = "body2";...
  • qiaojianwei2006
  • qiaojianwei2006
  • 2009年01月28日 23:02
  • 4792

android 对sqlite数据库的增删改查

android平台下数据库的一些概念 Sqlite是android平台的一款轻量级的、嵌入式的、关系型数据库产品,以下是一些主要概念。 1.Sqlite通过文件保存数据库,创建的数据库文件默认...
  • vrix
  • vrix
  • 2011年08月25日 08:58
  • 30467

【Android】Sqlite数据库增删改查

Android系统内置一个Sqlite数据库,如果app需要使用Sqlite数据库数据库存储数据,Android会为此app生成一个.db文件。这个数据库在data/data//databases里面...
  • yongh701
  • yongh701
  • 2015年07月28日 20:59
  • 8057
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 中数据库查询方法 query() 中的 selectionArgs 的用法
举报原因:
原因补充:

(最多只允许输入30个字)