zoukankan      html  css  js  c++  java
  • 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:      }
  • 相关阅读:
    pdf 去水印 比较好用
    ffmpeg从视频中每隔几秒提取一张图片
    tampermonkey 网盘直链下载助手
    淘工厂买的usb 蓝牙5.0 外置台式机 适配器(下载)
    Apache Doris 轻松入门和快速实践
    一步一步编译最新版Apache Doris 0.15版本的详细过程
    go使用msgpack
    服务接口杂谈
    关于真伪3层所讨论的
    jattach最近的一些更新
  • 原文地址:https://www.cnblogs.com/beijiguangyong/p/2302761.html
Copyright © 2011-2022 走看看