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:          @Override
   6:          public void onCreate(SQLiteDatabase db) {
   7:              String sql = "CREATE TABLE " + TABLE_NAME + " (" + TITLE
   8:                      + " text not null, " + BODY + " text not null " + ");";
   9:              Log.i("haiyang:createDB=", sql);
  10:              db.execSQL(sql);
  11:          }
  12:          @Override
  13:          public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  14:          }
  15:      }

其中onCreateSQLiteDatabase)在数据库第一次生成的时候会调用这个方法,一般在这个方法里生成数据表。

onUpgradeSQLiteDatabaseintint)方法是当数据库升级的时候会被Android系统主动调用。一般在这个方法里边删除数据表,并建立新的数据表,以及一些其他的操作这取决于软件的需求。

l  新建数据表

数据库有了下一步就是建表了,和建数据库一样也是通过执行SQL语句进行建表的操作代码如下

   1:  private void CreateTable() {
   2:          SQLiteDatabase db = mOpenHelper.getWritableDatabase();
   3:          String sql = "CREATE TABLE " + TABLE_NAME + " (" + TITLE
   4:                  + " 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 + ", " + BODY
   7:                  + ") values('haiyang', 'android的发展真是迅速啊');";
   8:          String sql2 = "insert into " + TABLE_NAME + " (" + TITLE + ", " + BODY
   9:                  + ") 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当中,CursorAndroid当中的一个接口,通过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:      }
posted @ 2011-06-30 20:41  郗晓勇  阅读(277)  评论(0编辑  收藏  举报