Android设备中配备了SQLite数据库。通过SQLiteOpenHelper来访问SQLite数据库。而执行SQL语句的操作是位于android.database.sqlite包中的SQLiteDatabase类,通过SQLiteOpenHelper中的 getWritableDatabase或getReadableDatabase方法,可以获取到不同权限的SQLiteDatabase。
SQLiteOpenHelper主要用于操作数据库和升级升级数据库。其中,onCreate和onUpgrade是该类的两个主要方法,负责数据库的创建和升级。这两个方法的调用规则如下:
1.如果数据库文件不存在,SQLiteOpenHelper在自动创建数据库后仅仅执行onCreate方法,该方法中,一般需要创建数据库中的表、视图等组件。因执行onCreate之前,数据库不存在,故不必执行删除(已存在组件)操作。
2.如果数据库存在,且当前版本号高于上次创建或升级时的版本号,那么SQLiteOpenHelper会调用onUpgrade方法,该方法会更新数据库版本号。在该方法中,首先应该删除已创建的表、视图等组件,然后创建新的数据库表、视图等组件。故在执行onUpgrade之前,数据库表是存在的,而且已经存在相应的数据库组件。
创建自定义SQLiteOpenHelper类核心代码段如下所示。
public class MsgRecordDBHelper extends SQLiteOpenHelper { public MsgRecordDBHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } @Override public void onCreate(SQLiteDatabase sdb) { String sqlCreate; //创建数据库表的SQL语句 sdb.execSQL(sqlCreate); } @Override public void onUpgrade(SQLiteDatabase sdb, int oldVersion, int newVersion) { //执行更新数据库版本号、数据库表的操作。 } }
随后,在数据库接口(DAO)层中,通过SQLiteOpenHelper 类的子类来获取SQLiteDatabase,这样,就可以执行SQL语句,实现了对SQLite数据库的CRUD基本操作。
MsgRecordDBHelper dbHelper= new MsgRecordDBHelper(_context); SQLiteDatabase db = dbHelper.getWritableDatabase();
SQLiteDatabase 类提供了一系列对数据库的基本操作的API,详细内容见android.database.sqlite.SQLiteDatabase。