1.SQLiteOpenHelper是将对数据库和表的创建、插入、更新、删除操作进行了简单的封装;
2、SQLiteDataBase代表一个数据库(底层就是一个数据库文件),一旦应用程序获得了代表指定数据库的SQLiteDataBase对象,接下来就可以通过SQLiteDataBase对象来管理和、操作数据库
3.而ContentProvider可以说是一个对外的接口,除了可以实现对SQLiteOpenHelper的封装,还可以实现对文件操作、图片操作、对象操作等实现封装;
4.在多线程中使用SQLiteOpenHelper要考虑线程同步问题,而如果使用ContentProvider的话基本不用考虑;
首先我们先了解一下SQLiteDatabase里面包含的方法,(ps:有点多,也有点烦,但是只要耐下心来看,还是可以看懂的,我就是这么过来的)
SQLite提供了一下的静态方法来打开一个文件对应的数据库:
Static SQLiteDataBase openDatabase(String path,SQLiteDataBase.CursorFactory factory,int falgs)打开path文件所代表的SQLite的数据库。
static SQLiteDataBase openOrCreateDataBase(file,SQLiteDataBase.Cursor Factory factory)打开或创建(如果文件不存在)field文件所代表的SQLite数据库。
static SQLiteDataBase openOrCreateDataBase(String path, SQLiteDataBase)打开或创建(如果文件不存在)path文件所代表的SQLite数据库。
在程序中获得SQLiteDataBsase对象之后,接下来就可调用SQLiteDatabase的如下方法来操作数据库了
execSQL(String sql,Object[] bindArgs):执行定占位符的SQL语句。
execSQL(String sql):执行SQL语句。
insert(string table,ContentValues,String WhereCalues,String[]):向执行表中插入数据
update(Stirng table,ContentValues values.String WhereCalues,String[] WhereArgs)更新指定表中的数据
delete(String table,String WHereClaus,String[] whereArgs):删除指定表中的特定数据
Cursor query(String table,Stirng[] colums,Stirng WhereCaluse,String[] whereargs,String having,Strig orderBy):对执行数据进行出询。
Cursor query(String table,Stirng[] colums,Stirng WhereCaluse,String[] whereargs,String having,Strig orderBy,String limit):对执行数据表执行查询。limit参数控制最多查询几条记录(用于控制分页的参数)
Cursor query(boolean distinct,String table,Stirng[] colums,Stirng WhereCaluse,String[] whereargs,String having,Strig orderBy,String limit):对指定表执行查询语句。其中第一个参数控制是否去除重复值。
rawQuery(String sql,String[] selectionArgs):执行带占位符的sql查询。
beginTransaction():开始事务
endTransaction():结束事务。
SQLiteOpenHelper类
常用的方法:
synchronzed SQLiteDataBase getReadableDatabase():以读写的方式打开数据库对应的SQLiteDatabase对象
synchronzed SQLiteDataBase getWRitableDatabase():以写的方式打开数据库对应的SQLiteDatabase对象
abstract void onCreate(SQLiteDataBase db):当第一次创建数据库时回调该方法。
abstract void onUpgrade(SQLiteDataBase db,int oldVersion, int newVersion):当数据库版本更新时回调该方法
synchronized void close():关闭所有打开的SQLiteDataBase