Android学习笔记(五)——数据存储(二)SQLite和ContentProvider

3.SQLite

SQLiteDatebase的实例代表了一个SQLite数据库,它的方法可以执行SQL语句。数据库对于一个应用是私有的,在一个应用中,数据库名也是唯一的。

SQLiteOpenHelper 抽象类 主要生成数据库,当程序调用类方法getWritableDatabase()或者getReadableDatabase()时,如果当时没有数据,系统会自动生成一个数据库。具体函数:

    onCreate(SQLiteDatebase)//生成数据库表

      onUpdate()//DB需要升级的时候,系统主动调用,在方法里一般删除数据表,建立新的数据表

    onOpen()//打开数据库的触发函数,一般不会用到

在对数据库进行操作:

     1.首先获得数据库:SQLiteDatebase db= mOpenHelper.getWritableDatabase();

           2.Sql语句:String sql = “xxx”;

           3.异常处理中执行SQL

               try{

                  db.execSQL(sql);

              }catch(SQLExcetion e){

              ...

              }

       Cursor是Android中非常有用的接口,通过它可以对数据库的查询结果集进行随机的读写访问。游标

     Cursor cur = db.query(...);获得查询的结果集

     db.delete(...);//删除记录

     ContentValues类:负责存储一些名值对,其中名是String类型,而值都是基本类型。此类可以代替原始SQL语句,先把要操作的值都放入一个ContentValues实例中,再执行操作:ContentValues initval = new ContentValues();

         initval.put(KEY_TITLE,title);//名值对就是<列名,列值>     

     initval.put(KEY_BODY,body);

     Db.insert(DATABASE_TABLE,null,initval);

//ListView方式显示数据

    Cursor mCursor = db.getAllNotes(); //获取数据库中所有数据,这些数据都以Cursor形式存在

    startManagerCursor(mCursor);//将生成的Cursor交给Activity管理,这样系统能自动做很多事

    String[] from = new String[]{xxx.KEY_TITLE,xxx.KEY_CREATED};

    Int[] to = new int[]{R.id.text1,R.id.created};

    SimpleCursorAdapter notes = new SimpleCursorAdapter(

        this,R.layout.xxx,mCursor,from,to);

        //第一个参数Context

        //第二个是规定ListView每一项的布局,也可以是系统的

        //第三个参数是Cursor

        //第四个参数是数据表中列的数组,只有在这里出现的列名,数据才会对应的填充在to里边对应的TextView或者ImageView中。

        //第五个参数是在ListView里每一项需要被数据填充的Textview或者ImageView。

     setListAdapter(notes);将SimpleCursorAdapter和ListActivity里边的ListView绑定起来,至此在界面中才会显示出列表来。

SimpleCursorAdapter 和ArrayAdapter、SimpleAdapter类似,

ArrayAdapter是负责把一个字符串数组的数据填充到一个ListView中,而对应的SimpleCursorAdapter负责把Cursor里边的内容填充到Listview中,通过它可以把数据库当中一列的数据和ListView的一排对应起来,要求对应的View必须是TextView或者ImageView

ContentProvider 类 实现了一组标准的方法接口,从而能够让其他的应用保存或读取此Content Provider的各种数据类型,实现数据在多个程序之间的共享。外界可以通过这套标准及统一的接口对程序中的数据读取或删除。

常用接口:

query(...);通过URI进行查询,返回一个Cursor

insert(...);将一组数据插入到URI指定的地方

update(...);更新指定位置的数据

delete(...);删除指定URI并符合一定条件的数据

外界可以通过ContentResolver接口可以访问ContentProvider提供的数据,getContentResolver()可以得到当前应用的ContentResolver实例,ContentResolver提供的接口和ContentProvider需要实现的接口对应。

在两种类用到的URI的形式有两种,一种是指定全部数据,另一种是指定某个ID的数据:content://contacts/people/  指定全部联系人数据

content://contacts/people/1  指定ID为1 的联系人的数据

URI由三部分组成:1.content://

                2.要获得数据的字符串片段

                3.ID(若没有就返回全部)

Android中定义了一些辅助类,并且定义一些常量来代替长字符串的使用:

           Contacts.People.CONTENT_URI (联系人的URI)

对数据库数据的操作可以直接访问数据库,也可以通过程序的ContentProvider实现

(详情见日记本实例程序和讲解)

如果需要访问外部网络,则需要在AndroidManifest.xml文件中加入申请权限许可: <uses-permission Android:name = “Android.permission.INTERNET”/>

转载于:https://www.cnblogs.com/shyang--TechBlogs/archive/2011/03/16/1986153.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值