Android周学习Step By Step(6)--Android的数据库SQLite
在Android中可供选择的存储方式有SharedPreferences、文件存储、SQLite数据库、Content provider和网络。下面主要说一说SQLite
SQLite是轻量级的嵌入式数据库,麻雀虽小但五脏俱全。
l 新建数据库
通过SQLiteOpenHelper类可以生成一个数据库并对数据库的版本进行管理。当在程序中调用这个类的方法getWritableDataBase()或者getReadableDataBase()方法的时候,如果当时没有数据,那么Android系统就会自动生成一个数据库。代码如下:
1: private static class DatabaseHelper extends SQLiteOpenHelper {2: DatabaseHelper(Context context) {
3: super(context, DATABASE_NAME, null, DATABASE_VERSION);4: }
5: @Override6: public void onCreate(SQLiteDatabase db) {7: String sql = "CREATE TABLE " + TABLE_NAME + " (" + TITLE8: + " text not null, " + BODY + " text not null " + ");";9: Log.i("haiyang:createDB=", sql);10: db.execSQL(sql);
11: }
12: @Override13: public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {14: }
15: }
其中onCreate(SQLiteDatabase)在数据库第一次生成的时候会调用这个方法,一般在这个方法里生成数据表。
onUpgrade(SQLiteDatabase,int,int)方法是当数据库升级的时候会被Android系统主动调用。一般在这个方法里边删除数据表,并建立新的数据表,以及一些其他的操作这取决于软件的需求。
l 新建数据表
数据库有了下一步就是建表了,和建数据库一样也是通过执行SQL语句进行建表的操作代码如下
1: private void CreateTable() {2: SQLiteDatabase db = mOpenHelper.getWritableDatabase();
3: String sql = "CREATE TABLE " + TABLE_NAME + " (" + TITLE4: + " text not null, " + BODY + " text not null " + ");";5: Log.i("haiyang:createDB=", sql);6: try {7: db.execSQL("DROP TABLE IF EXISTS diary");8: db.execSQL(sql);
9: setTitle("数据表成功重建");10: } catch (SQLException e) {11: setTitle("数据表重建错误");12: }
13: }
对数据库的操作
对数据库的操作无非就是增、删、改、查了,Android和.NET是一样的,都是通过传SQL语句并执行来对数据进行相关的操作。以插入数据为例,具体代码如下(删除、修改操作同理,只需要改写SQL语句即可)
1: /*2: * 插入两条数据3: */4: private void insertItem() {5: SQLiteDatabase db = mOpenHelper.getWritableDatabase();
6: String sql1 = "insert into " + TABLE_NAME + " (" + TITLE + ", " + BODY7: + ") values('haiyang', 'android的发展真是迅速啊');";8: String sql2 = "insert into " + TABLE_NAME + " (" + TITLE + ", " + BODY9: + ") values('icesky', 'android的发展真是迅速啊');";10: try {11: Log.i("haiyang:sql1=", sql1);12: Log.i("haiyang:sql2=", sql2);13: db.execSQL(sql1);
14: db.execSQL(sql2);
15: setTitle("插入两条数据成功");16: } catch (SQLException e) {17: setTitle("插入两条数据失败");18: }
19: }
也可以通过insert方法直接进行数据插入,这里相当于.NET中的SQLHelper一样,Android已经为我们写了增、删、改、查的方法,只需要加进去相应的参数即可。
在Android中查询到的数据将放在Cursor当中,Cursor是Android当中的一个接口,通过Cursor我们可以对从数据库中获得的数据进行相应的操作,相当于.NET中的DataTable或者DataSet。简单的查询代码如下
1: private void showItems() {2: SQLiteDatabase db = mOpenHelper.getReadableDatabase();
3: String col[] = { TITLE, BODY };
4: Cursor cur = db.query(TABLE_NAME, col, null, null, null, null, null);5: Integer num = cur.getCount();
6: setTitle(Integer.toString(num) + " 条记录");7: }