ContentResolver

查询

uri标识唯一的数据库:

 content://com.example.app.provider/table1 

解析成URI对象:

val uri = Uri.parse("content://com.example.app.provider/table1") 

通过URI查询:

 val cursor = contentResolver.query( 
    uri, 
    projection, 
    selection, 
    selectionArgs, 
    sortOrder) 

得到的对象是一个Cursor对象,需要提取数据:

 while (cursor.moveToNext()) { 
    val column1 = cursor.getString(cursor.getColumnIndex("column1")) 
    val column2 = cursor.getInt(cursor.getColumnIndex("column2")) 
} 
cursor.close() 

插入

val values = contentValuesOf("column1" to "text", "column2" to 1) 
contentResolver.insert(uri, values) 

修改

val values = contentValuesOf("column1" to "") 
contentResolver.update(uri, values, "column1 = ? and column2 = ?", arrayOf("text", "1"))

删除

 contentResolver.delete(uri, "column2 = ?", arrayOf("1")) 

创建自己的ContentResolver

方法:创建一个类去继承ContentResolver:

class MyProvider : ContentProvider() { 
    override fun onCreate(): Boolean { 
        return false // 完成数据库的创建和升级
    }
    override fun query(uri: Uri, projection: Array<String>?, selection: String?, 
            selectionArgs: Array<String>?, sortOrder: String?): Cursor? { 
        return null  
    } 
    override fun insert(uri: Uri, values: ContentValues?): Uri? { 
        return null 
    } 
    override fun update(uri: Uri, values: ContentValues?, selection: String?, 
            selectionArgs: Array<String>?): Int { 
        return 0 
    } 
    override fun delete(uri: Uri, selection: String?, selectionArgs: Array<String>?): Int { 
        return 0 
    } 
    override fun getType(uri: Uri): String? { 
        return null // 根据传入的内容URI返回相应的MIME类型
    } 

自定义设置查询范围

 class MyProvider : ContentProvider() { 
 
    private val table1Dir = 0 
    private val table1Item = 1 
    private val table2Dir = 2 
    private val table2Item = 3 
 
    private val uriMatcher = UriMatcher(UriMatcher.NO_MATCH) 
 
    init { 
        uriMatcher.addURI("com.example.app.provider", "table1", table1Dir) 
        uriMatcher.addURI("com.example.app.provider ", "table1/#", table1Item) 
        uriMatcher.addURI("com.example.app.provider ", "table2", table2Dir) 
        uriMatcher.addURI("com.example.app.provider ", "table2/#", table2Item) 
    } 
    ... 
    override fun query(uri: Uri, projection: Array<String>?, selection: String?, 
            selectionArgs: Array<String>?, sortOrder: String?): Cursor? { 
        when (uriMatcher.match(uri)) { 
            table1Dir -> { 
                // table1 查询
            } 
            table1Item -> { 
                // table1 查询单条数据
            } 
            table2Dir -> { 
                // table2 
            } 
            table2Item -> { 
                // table2 
            } 
        } 
        ... 
    } 
    

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值