Android快速开发框架之xUtils---数据库模块

本篇博客将介绍一下xUtils的数据库模块,想要学习的小伙伴请先看第一篇注解模块完成第一第二步哦。

Android快速开发框架之xUtils—注解模块:http://blog.csdn.net/a_zhon/article/details/52814534

Android快速开发框架之xUtils—网络模块:http://blog.csdn.net/a_zhon/article/details/52817530

Android快速开发框架之xUtils—图片模块:http://blog.csdn.net/a_zhon/article/details/52864698

1.创建数据库,我们需要获得DbManager.DaoConfig对象并设置属性,同时获取DbManager这样我们就可以操作数据库了

private DbManager.DaoConfig daoConfig = new DbManager.DaoConfig()
            .setDbName("azhong.db")//设置数据库的名字
            .setTableCreateListener(new DbManager.TableCreateListener() {//创建表的监听
                @Override
                public void onTableCreated(DbManager db, TableEntity<?> table) {
                    Log.d("TAG", table.getName());
                }
            })
            .setAllowTransaction(true)//设置是否允许事务,默认是true
            .setDbDir(new File(Environment.getExternalStorageDirectory() + "/zsy"))//设置数据库路径,默认是data/data/包名/database
            .setDbOpenListener(new DbManager.DbOpenListener() {//设置数据库打开的监听
                @Override
                public void onDbOpened(DbManager db) {
                    db.getDatabase().enableWriteAheadLogging();//开启多线程操作
                }
            });
//          .setDbUpgradeListener()//设置数据库更新的监听
//          .setDbVersion(1);//设置数据库的版本

private DbManager dbManager = x.getDb(daoConfig);

2.创建数据库和表并插入数据,我们需要先创建一个实体类也就是表了。指定表名,字段

@Table(name = "zhong")//onCreated ="sql语句" 表一创建会执行的sql语句
public class ChildInfo {
    //指明字段,主键,是否自增长,约束(不能为空)
    @Column(name = "id", isId = true, autoGen = true, property = "NOT NULL")
    private int id;
    @Column(name = "age")
    private int age;
    @Column(name = "name")
    private String name;

    //必须声明这个默认构造方法,否则表无法创建
    public ChildInfo() {
    }

    public ChildInfo(String name, int age) {
        this.age = age;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "ChildInfo{" +
                "id=" + id +
                ", age=" + age +
                ", name='" + name + '\'' +
                '}';
    }
}

3.创建表并插入数据

    /**
     * 创建数据库,创建了表,插入了一条数据
     * 再次点击,只会插入数据不会在创建数据库 表
     */
    @Event(R.id.create_db)
    private void createDb(View view) throws DbException {
        List<ChildInfo> childInfo = new ArrayList<>();
        childInfo.add(new ChildInfo("阿钟0", 18));
        childInfo.add(new ChildInfo("阿钟1", 19));
        childInfo.add(new ChildInfo("阿钟2", 20));
        childInfo.add(new ChildInfo("阿钟3", 21));
        childInfo.add(new ChildInfo("阿钟4", 22));
        childInfo.add(new ChildInfo("阿钟5", 23));
        childInfo.add(new ChildInfo("阿钟6", 24));
        childInfo.add(new ChildInfo("阿钟7", 25));
        dbManager.save(childInfo);//创建表和数据库
    }

4.删除数据库

    //删除数据库
    @Event(R.id.delete_db)
    private void deleteDb(View view) throws DbException {
        dbManager.dropDb();
    }

5.删除表

    //删除表
    @Event(R.id.delete_table)
    private void deleteTable(View view) throws DbException {
        dbManager.dropTable(ChildInfo.class);
    }

6.查询表,查询第一条数据,或者添加约束条件查询

    /**
     * 查询表
     */
    @Event(R.id.select_table)
    private void selectTable(View view) throws DbException {
        //从数据库中查询第一条数据
//        ChildInfo first = dbManager.findFirst(ChildInfo.class);
//        dbManager.findAll()//从数据库中查询所有数据
//        textView.setText(first.toString());

        //加条件查询  25>age>22
        WhereBuilder b = WhereBuilder.b();
        b.and("age", ">", 22);//条件
        b.and("age", "<", 25);
        List<ChildInfo> all = dbManager.selector(ChildInfo.class).where(b).findAll();//查询
        StringBuilder s = new StringBuilder();
        for (ChildInfo info : all) {
            s.append(info.toString());
        }
        textView.setText(s);
    }

7.更新数据。WhereBuilder 既是添加增删改查的条件类

    /**
     * 更新数据
     *
     * @param view
     * @throws DbException
     */
    @Event(R.id.update_table)
    private void updateTable(View view) throws DbException {

        //第一种
        ChildInfo first = dbManager.findFirst(ChildInfo.class);//修改了第一条数据
//        first.setName("老王");
//        first.setAge(30);
//        dbManager.update(first, "name", "age");
//        ChildInfo f = dbManager.findFirst(ChildInfo.class);
//        textView.setText(f.toString());

        //第二种
        WhereBuilder b = WhereBuilder.b();
        b.and("id", "=", first.getId());//条件
        KeyValue age = new KeyValue("age", "100");
        KeyValue name = new KeyValue("name", "老李");
        dbManager.update(ChildInfo.class, b, age, name);
        //第三种
        ChildInfo fi = dbManager.findFirst(ChildInfo.class);
        fi.setAge(12);
        fi.setName("隔壁老王");
        dbManager.save(fi);
    }

8.删除某条数据

    //删除数据
    @Event(R.id.delete_data)
    private void deleteData(View view) throws DbException {
        dbManager.delete(ChildInfo.class);//删除所有数据

        WhereBuilder b = WhereBuilder.b();
        dbManager.delete(ChildInfo.class, b);//添加条件删除
    }

效果图

这里写图片描述

啦啦啦。。。到这里xUtils框架也就说完了大致使用也就是这些了,想要具体学习的小伙伴可以去极客学院学习一下。

项目地址:https://github.com/azhong1011/xUtils

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code-Porter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值