Android基础之Sqlite数据库

在Android平台上,集成了一个嵌入式关系型数据库—SQLite,它是一种非常轻量的数据库管理系统,SQLite3支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,SQLite通过文件来保存数据库,一个文件就是一个数据库。
- 常用类介绍
- SQLiteOpenHelper
数据库辅助抽象类,通过实现它的子类可以创建数据库以及实现版本更新,通过getWriteableDatabase获得getReadableDatabase获取数据库访问类
-SQLiteDatabase:数据库访问类
通过数据库访问类,可以实现对数据库的增删改查等操作
Android创建Sqlite数据库
SQLite数据库是在第一次调用的时候创建数据库的
创建数据库的步骤:

1.定义一个db辅助类,继承SQLiteOpenHelper抽象类,通过构造方法设置数据库名及版本信息。
2. 重写onCreate()方法,该方法只会在数据库第一次创建的时候调用,在此方法中适合做数据库初始化操作,比如创建数据表等。
3. 重写onUpGrade() , 当数据库版本更新时调用,适合做表结构的修改或者添加删除表。

* 参考代码:

/**
     * 数据库辅助类的构造方法,当数据库存在,则直接返回,没有则创建数据库,并调用onCreate()初始化数据库
     * @param context:上下文
     * @param name :数据库名  以文件的形式保存
     * @param factory :游标工厂,一般是由系统来提供
     * @param version :版本   最小为1的整数
     */
    public DBHelper(Context context) {
        super(context, NAME, null, VERSION);
    }
    /**
     * 当初始化数据库的时候调用,在这里进行数据表的创建,相应初始数据的添加
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        //创建book表
    String sqlStr="create table t_book(_id integer primary key autoincrement ,name text ,price integer)";
        //执行sql语句
        db.execSQL(sqlStr);
    }
    /**
     * 当版本要更新的时候调用,一般实现数据表结构的修改,
     * 添加删除表,当newVersion 大于oldVersion时调用
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("drop table if exists t_book ");
        onCreate(db);
        System.out.println("onUpgrade");
    }

SQLite数据库增删改查
1 添加记录

public int save(ContentValues values){
        //取得SqliteDatabase 对象来对数据库进行增删改查
        SQLiteDatabase db=dbHelper.getWritableDatabase();
        /**
         * 1、table:表名
         * 2、nullColumnHack:当values为null时 ,默认填充要插入的字段
         * 3、ContentValues:内容值,好比HashMap
         */
        Long row=db.insert(TABLE, null, values);
        // insert into  table (name,price) values("鬼吹灯1","35")
        //假如 ContentValues为空 :insert into table(null)values (null)
        //关闭数据库
        db.close();
        return row.intValue();
    }

2 删除记录

//删除一条记录
    public int delete(int id){
        SQLiteDatabase db=dbHelper.getWritableDatabase();
        /**
         * table:表名
         * whereClause:条件
         * whereArgs:条件占位符  id=?        new String[]{id}
         */
        int num=db.delete(TABLE, " id=? ", new String[]{String.valueOf(id)});
        db.close();
        return num;
    }

3 查询

//查找所有记录
    public ArrayList<HashMap<String, Object>> find(){
        SQLiteDatabase db=dbHelper.getReadableDatabase();
ArrayList<HashMap<String,Object>>data=new ArrayList<HashMap<String,Object>>();
    Cursor cursor=db.query(TABLE, null, null, null, null, null, PRICE+" desc");
        while(cursor.moveToNext()){
            HashMap<String, Object> map=new HashMap<String, Object>();
            map.put(ID, cursor.getInt(cursor.getColumnIndex(ID)));
            map.put(NAME, cursor.getString(cursor.getColumnIndex(NAME)));
            map.put(PRICE, cursor.getInt(cursor.getColumnIndex(PRICE)));
            data.add(map);
        }
        db.close();
        return data;
    }
    /**
     * 查寻数据库中的数据,返回的值为Cursor类型
     */
    public Cursor findByCursor(){
        SQLiteDatabase db=dbHelper.getReadableDatabase();
        Cursor cursor=db.query(TABLE, null, null, null, null, null,null);
        //用Cursor返回 ,不能关闭数据库
        return cursor;
    }

4 更新记录

/**
     * 记录更新
     * @param values
     * @return
     */
    public int update(ContentValues values){
        //更新某条记录 传一个Id过来
        String id=values.getAsString(ID);
        SQLiteDatabase db=dbHelper.getWritableDatabase();
        int num=db.update(TABLE, values, " id=?", new String[]{id});
        db.close();
        //关闭数据库
        return num;
    }

SQLite事务处理

/**
     * 一条记录更新
     * @param values
     * @return
     */
    public int update(ContentValues values){
        //更新某条记录 传一个Id过来
        String id=values.getAsString(ID);
        SQLiteDatabase db=dbHelper.getWritableDatabase();
        int num=db.update(TABLE, values, " id=?", new String[]{id});
        db.close();
        //关闭数据库
        return num;
    }

写博客纯属个人爱好,如果又不对的地方,欢迎吐槽。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值