android中SQLite的使用

来源:互联网 发布:关于来电软件 编辑:程序博客网 时间:2024/05/20 07:18

android的四大组件之一的contentprovider用来共享数据,很多应用的provider会继承它,例如MediaProvider。

在android中操作数据库要用到几个类:SQLiteDatabase、SQLiteOpenHelper。SQLitedatabase是一个数据库类,实例化生成数据库对象。使用时经常要用到助手类SQLiteOpenHelper。但SQLiteOpenHelper是抽象类,使用时需要继承然后实例化,一般会用DatabaseHelper继承SQLiteOpenHelper,override父类的回调函数。

SQLiteOpenHelper是用于创建数据库和管理版本的助手类,中有抽象方法onCreate()、onUpdate,加上onOpen,三个为回调函数,在某些时候会自动调用,需要子类override。例如创建时会调用onCreate。通过调用getReadableDatabase() 、getWriteableDatabase() 得到一个SQLitedatabase,进而对数据库进行增删改查。

SQLiteDatabase,管理数据库的外部方法的类。主要有创建、删除、执行SQL指令等方法,如close()关闭数据库,delete删除数据库的一行,execSQL执行SL指令,insert插入一行。。。

DatabaseHelper类,构造函数很重要。

创建一个数据库:new Databases()。此时并没有调用onCreate,而直到getReadableDatabase()后才返回一个SQLiteDatabase对象,即调用了onCreate。创建了的数据库对象放在/data/data/下,用命令sqlite3 database_name进入操作数据库模式,可以输入数据库语句进行操作。

当发现构造函数中版本信息发生变化时,自动调用onUpgrade进行升级。

对数据库进行写操作时,经常用到contentValue,

更新数据库就相当于执行update语句。database_name.update(table_name,contentValue_object,where)

查询query。要用到游标cursor。在使用cursor时,第一是不断地往下移动游标cursor.moveToNext(),第二是判断下一个记录是否为空(if (cursor == null))。要去某一个记录中某一列的数据,需要两步,cursor.getString(index), 而index通过getColumnIndex()获得。

小结:数据库是自己的弱项,在做多媒体时,总会遇到这样那样的数据库、MediaProvider问题,所以要好好重视一下。


在csdn贴子上又看到了这么一段挺精炼的解释:

什么是SQLiteDatabase? 
一个SQLiteDatabase的实例代表了一个SQLite的数据库,通过SQLiteDatabase实例的一些方法,我们可以执行SQL语句,对数据库进行增、删、查、改的操作。需要注意的是,数据库对于一个应用来说是私有的,并且在一个应用当中,数据库的名字也是惟一的。
Content Provider:
一般是通过ContentResolver。你可以通过getContentResolver()从一个活动或其它应用程序组件的实现里获取一个ContentResolver:
查询一个内容提供器Querying a Content Provider
你需要三方面的信息来查询一个内容提供器:
•用来标识内容提供器的URI
•你想获取的数据字段的名字
•这些字段的数据类型
生成查询Making the query
你可以使用ContentResolver.query()方法或者Activity.managedQuery()方法来查询一个内容提供器。两种方法使用相同的参数序列,而且都返回一个Cursor对象
批量更新记录Batch updating records
要批量更新一组记录(例如,把所有字段中的"NY"改为"New York"),可以传以需要改变的列和值参数来调用ContentResolver.update()方法。
删除一个记录Deleting a record
要删除单个记录,可以传以一个特定行的URI参数来调用ContentResolver.delete()方法。
创建一个内容提供器Creating a Content Provider
要创建一个内容提供器,你必须:
•建立一个保存数据的系统。大多数内容提供器使用Android的文件储存方法或SQLite数据库来存放它们的数据,但是你可以用任何你想要的方式来存放数据。Android提供SQLiteOpenHelper类来帮助你创建一个数据库以及SQLiteDatabase类来管理它。
•扩展ContentProvider类来提供数据访问接口。



原创粉丝点击