ContentProvider是Android中不同应用之间传递数据的API,通过重写ContentProvider中的CRUD方法实现数据处理。那么他的CRUD方法与SQLiteDatabase的CRUD方法之间有什么联系呢?或者说,参数是如何传递的?
比较复杂的是二者的query方法,先来看看两个方法的签名:
- ContentProvider的query方法
1 public Cursor query(Uri uri, String[] projection, String where, String[] whereArgs, String sortOrder)
参数说明
参数 | 说明 |
Uri uri | 标示需要操作的数据的地址(我自己的理解) |
String[] projection | 相当于要查询的字段名 |
String where | 查询的条件 |
String[] whereArgs | 查询条件的占位符插入的参数 |
String sortOrder | 排序方式 |
- SQLiteDatabase的query方法
1 public Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)
参数说明
参数 | 说明 |
String table | 表名 |
String[] columns | 要查询的列名 |
String selection | 查询的条件子句 |
String[] selectionArgs | 查询条件占位符插入的参数 |
String groupBy | 分组条件子句 |
String having | have 子句 |
String orderBy | 排序条件 |
String limit | 用于进行分页 |
对比两个方法的参数,相对应的参数有4个:
ContentProvider.query | SQLiteDatabase.query | 参数说明 | 能否为空 |
String[] projection | String[] colums | 要查询的列名数组 | 可以为null,表示查询所有列 |
String where | String selection | 查询的条件子句 | 可以为null,表示查询所有列 |
String[] whereArgs | String[] selectionArgs | 条件子句中占位符“?”传入的参数值 | 可以为null |
String sortOrder | String orderBy | 对记录进行排序 | 可以为null |