数据存储详解(三)---->数据库存储

来源:互联网 发布:淘宝图片空间怎么导出 编辑:程序博客网 时间:2024/05/25 20:01

系列文档:
数据存储详解(一)—->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()方法:
    这里写图片描述

0 0
原创粉丝点击