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 |