• android 学习四 ContentProvider


    1.系统自带的许多数据(联系人,本地信息等)保存在sqllite数据库,然后封装成许多ContentProvider来供其他程序访问。

    2.对sqllite数据库的操作,可以在命令行通过adb工具登录设备运行sqlite3来操作。
    3.ContentProvider 是用URI来标示,访问程序通过URI来访问相应的数据,URI的结构是
       content://***/*/*...其中***是授权,在ContentProvider提供程序的说明文件中声明,后面的*表示路径,具体由ContentProvider实现来解释,ContentProvider为简化URI的调用,将这种URI定义为常量字符串供查看和调用。
     
    4.客户端通过URI和需要获取的列,选择条件,排序条件等用相应的api来获取结果,结果是一个android Cursor,可以使用相应的方法获取结果集中的内容,返回的数据是MIME格式,类型/子类型。
     
    5.android内置
     
     
    6.从Context中获取ContentResolver,然后ContentResolver通过URI  进行AUD ContentProvider操作
    7.可以通过managedQuery方法获取一个ContentProvider数据集合(Cursor)然后通过Cursor类的,moveFirst() afterLast() moveNext()来遍历数据,并可以先获取列索引(Cursor.getColumnIndex(columnName)),然后根据索引获取列值(Cursor.getString(ColumnIndex))
     
    8.where子句可以通过URI和参数两种方式,orderby子句可以通过参数,having可以通过参数指定。
    9.操作记录时需要一个ContentValues类型,该类型为键值对,键为列名值为需要插入的值。insert操作会返回插入记录的URI
    10.将文件添加到ContentProvider中。
         10.1通过一个insert操作获取URI
         10.1通在URI上使用(ContentResolver.openOutputStream(URI)来让提供程序产生一个内部文件,并将文件名保存在保留列_data上,然后返回这个内部文件的输出流。
     
    11.实现一个ContentProvider的几个步骤
        11.1 计划数据库,URI及列名称,创建元数据类来定义所有这些数据元素常量
        11.2扩展抽象类ContentProvider
        11.3实现方法query,insert,update,delete和getType
        11.4在描述文件中注册提供程序。
     
    12 扩展ContentProvider
         12.1扩展ContentProvider时需要定义和初始化一个列名称与别名的map,就算没有别名也需要。
         12.2用UriMatcher来识别uri
         12.3通过扩展SQLiteOpenHelper类来创建数据库,创建表,获取数据库实例。
         
     
  • 相关阅读:
    秒杀应用的MySQL数据库优化
    mongodb三种存储引擎高并发更新性能专题测试
    一次项目实践中DBCP数据库连接池性能优化
    初识中间件之消息队列
    Android性能测试--内存
    JVM源码分析之栈溢出完全解读
    case when then end
    工厂模式
    单例模式
    隐藏响应的server,X-Powered-By
  • 原文地址:https://www.cnblogs.com/manziluo/p/5800370.html
Copyright © 2020-2023  润新知