系列文档:
数据存储详解(一)—->SharedPreferences(xml存储)
数据存储详解(二)—->File存储:内部存储 -Cache和外部存储-SD卡
参考:http://www.cnblogs.com/ITtangtang/p/3920916.html#type3
1.概述:
android系统集成了一个轻量级的数据库:SQLite,这是一个嵌入式的数据库引擎,专门适用于资源有限的设备上(如手机)适量数据存取。
2.aql语句:
3.SQLiteOpenHelper类介绍
SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本的更新。一般是建立一个类继承它,并实现它的onCreate和onUpgrade方法。
public class MySqliteHelper extends SQLiteOpenHelper {
/**
* 这里可以实现两中构造器,而只复写一个
*
* @param context
* 上下文
* @param name
* 数据库名称
* @param factory
* 游标工厂,默认为null,即为使用默认工厂
* @param version
* 版本号
*
*/
public MySqliteHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
// 为了方便,我们将factory和version固定,重新写一个构造器,程序员常用偷懒方法
public MySqliteHelper(Context context, String name) {
this(context, name, null, 1);// 调用本对象的构造器,固定了factory和版本号
}
/**创建数据库时调用
*/
@Override
public void onCreate(SQLiteDatabase db) {// 创建数据表
// TODO Auto-generated method stub
db.execSQL("create table if not exists user (id integer primary key autoincrement,name varchar(20),password varchar(20))");
}
/**版本更新时调用
*/
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
}
4.数据库的创建:
我们获取数据库实例时使用了getWritableDatabase()方法。
如果不是在遇到磁盘空间已满等情况,getReadableDatabase()一般都会返回和getWritableDatabase()一样的数据库实例,所以我们在DBManager构造方法中使用getWritableDatabase()获取整个应用所使用的数据库实例是可行的。当然如果你真的担心这种情况会发生,那么你可以先用getWritableDatabase()获取数据实例,如果遇到异常,再试图用getReadableDatabase()获取实例,当然这个时候你获取的实例只能读不能写了。
注:这里的MySqliteHelper是自定义的类,该类继承了SQLiteOpenHelper 。
5.操作数据库:(注:这里增删改处理的参数中都是数据表,而不是数据库名称)
数据的处理都有两种方式:
代码和sql语句。
(1)插入数据:
- 使用insert方法
- 使用execSQL方式来实现
(2)删除数据:
- delete方法:
参数:数据表,限制条件,值(字符数组类型)
db.delete("user", "name=?", new String[]{"zhangsan"});//删除name为zhangsan的数据
(3)修改数据:
- update方法:
需要用到ContentValues
参数:数据表,要修改的values,限制条件,值。
(4)查询数据:
rawQuery方法:
解析:
cursor.getString(cursor.getColumnIndex(“name”));
//cursor.getColumnIndex(“name”)获得值为name的那列的列号
cursor.getString()通过列号获得该列的数据
Query()方法: