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:      }
<style type="text/css"> <!-- .csharpcode, .csharpcode pre {font-size:small; color:black; font-family:consolas,"Courier New",courier,monospace; background-color:#ffffff} .csharpcode pre {margin:0em} .csharpcode .rem {color:#008000} .csharpcode .kwrd {color:#0000ff} .csharpcode .str {color:#006080} .csharpcode .op {color:#0000c0} .csharpcode .preproc {color:#cc6633} .csharpcode .asp {background-color:#ffff00} .csharpcode .html {color:#800000} .csharpcode .attr {color:#ff0000} .csharpcode .alt {background-color:#f4f4f4; width:100%; margin:0em} .csharpcode .lnum {color:#606060} --> </style>

其中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:      }
<style type="text/css"> <!-- .csharpcode, .csharpcode pre {font-size:small; color:black; font-family:consolas,"Courier New",courier,monospace; background-color:#ffffff} .csharpcode pre {margin:0em} .csharpcode .rem {color:#008000} .csharpcode .kwrd {color:#0000ff} .csharpcode .str {color:#006080} .csharpcode .op {color:#0000c0} .csharpcode .preproc {color:#cc6633} .csharpcode .asp {background-color:#ffff00} .csharpcode .html {color:#800000} .csharpcode .attr {color:#ff0000} .csharpcode .alt {background-color:#f4f4f4; width:100%; margin:0em} .csharpcode .lnum {color:#606060} --> </style>

对数据库的操作

对数据库的操作无非就是增、删、改、查了,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。简单的查询代码如下

<style type="text/css"> <!-- .csharpcode, .csharpcode pre {font-size:small; color:black; font-family:consolas,"Courier New",courier,monospace; background-color:#ffffff} .csharpcode pre {margin:0em} .csharpcode .rem {color:#008000} .csharpcode .kwrd {color:#0000ff} .csharpcode .str {color:#006080} .csharpcode .op {color:#0000c0} .csharpcode .preproc {color:#cc6633} .csharpcode .asp {background-color:#ffff00} .csharpcode .html {color:#800000} .csharpcode .attr {color:#ff0000} .csharpcode .alt {background-color:#f4f4f4; width:100%; margin:0em} .csharpcode .lnum {color:#606060} --> </style>
   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:      }
<style type="text/css"> <!-- .csharpcode, .csharpcode pre {font-size:small; color:black; font-family:consolas,"Courier New",courier,monospace; background-color:#ffffff} .csharpcode pre {margin:0em} .csharpcode .rem {color:#008000} .csharpcode .kwrd {color:#0000ff} .csharpcode .str {color:#006080} .csharpcode .op {color:#0000c0} .csharpcode .preproc {color:#cc6633} .csharpcode .asp {background-color:#ffff00} .csharpcode .html {color:#800000} .csharpcode .attr {color:#ff0000} .csharpcode .alt {background-color:#f4f4f4; width:100%; margin:0em} .csharpcode .lnum {color:#606060} --> </style>

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. mybatisplus的坑 insert标签insert into select无参数问题的解决
  3. python起点网月票榜字体反爬案例
  4. Python list sort方法的具体使用
  5. python list.sort()根据多个关键字排序的方法实现
  6. Android(安卓)异步加载解决方案(循环,多任务)
  7. Android(安卓)传输数据时Base64编码算法详解
  8. Android(安卓)SQLite数据库 《第一行代码》
  9. android的Instrumentation详解

随机推荐

  1. android蓝牙开发入门到精通2---查找可见
  2. android MTK modem编译方法
  3. Android(安卓)设置全屏显示的方法
  4. Android(安卓)技巧 - 自动生成 Action Ba
  5. android 判断 网络 类型
  6. Android(安卓)线程池管理
  7. android百度地图 SDK v3.5.0
  8. Android中对话框的工具类
  9. Android仿WIN8系统磁贴点击下沉倾斜效果
  10. 使用android 隐藏命令