前言
不知不觉的Android基础系列已经写了十三篇了,这是第十四篇~上一篇blog记录了Android中的一种数据存储方案,即共享参数(Sharedpreferences)的使用(处女男学Android(十三)---Android 轻量级数据存储之SharedPreferences)。最近初学如何在Android中应用SQLite,写了一个基于ListView的增删查的小例子,本篇blog就记录一下我学习到的如何在Android中操作SQLite持久化客户端数据。
初始化SQLite
关于SQLite的基础知识本篇就不做介绍了,我们只需知道它也是一个关系型的轻量级数据库,并且是嵌入式的数据库引擎,较适用于移动设备的数据存储,详情可参考百科:http://baike.baidu.com/link?url=_RNKz-r1FBwEm4iVvyxLQzCuKRdR12RrHNtUUa2nhSpILvUyT3g8jxVMbQzWmRHAUaRPYBem04hwMyom3kVx0a
本节记录初始化,那无非就是建库和建表了,下面先看这样一段初始化代码:
package com.wl.cigrec.dao;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper {
// 数据库名
private static final String DB_NAME = "mycigrec.db";
// 数据库版本
private static final int VERSION = 1;
public DBHelper(Context context) {
super(context, DB_NAME, null, VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String sql1 = "create table t_order("
+ "id integer primary key autoincrement," + "count integer ,"
+ "money real,date date,balance real,orderid varchar(20))";
String sql2 = "create table t_order_detail("
+ "id integer primary key autoincrement,"
+ "cigname varchar(20),cigprice real,cigcount integer,orderid varchar(20))";
db.execSQL(sql1);
db.execSQL(sql2);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
System.out.println("------onUpgrade called------" + "oldVersion-->"
+ oldVersion + "," + "newVersion-->" + newVersion);
}
}
这就是初始化数据库的代码了,完全参考官方文档中的示例代码,下面逐行解释一下重点内容。
Line 7 定义了一个DB帮助类并且继承了SQLiteOpenHelper类,这个类是Android提供的管理数据库的工具类,封装了很多便捷操作DB的方法,实际开发中我们一般都会选择去扩展