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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值