这次上来就不是类图了,今天主要介绍自己封装的一个数据库(不足之处,望大家指出,感激不尽)。一说到数据库操作,大家是不是首先想到的是原生数据库sqlite的繁琐操作,或者就是导入GreenDao和最近很热的DBFlow?这次封装的数据库操作工具,或许适合还没有学会开源库但是又不想用原生sqlite的小伙伴。
其实安卓有自己封装的sql操作的API,但是还是有一些sql语句要写,例如删除的时候where这个参数要写"name = ?",后面还是要用到问号"?"。这次的封装就是完全不需要写这些sql语句的关键词,全部都是输入参数即可。
首先看看,大家印象中,sqlite的操作是不是这样的?要自己定义一堆一堆的sql语句,然后调用方法执行,如下图↓↓
而这次的工具封装了这些代码,只需要简单的操作就能实现增删查改,多简单呢?往下看↓↓↓↓↓↓↓↓↓↓↓↓
增:拿到插入数据的操作者DBInsertOperator,然后调用insertData方法,传入参数tablename(表名),要插入的字段new String[]{"name","age"},和字段对应的值new String[]{"张三","10"},两步搞定,连数据库关闭都不用自己操作,封装起来,插入数据后自动会调用database.close()。
DBInsertOperator dbOperator = new DBInsertOperator(this);
dbOperator.insertData(tablename,new String[]{"name","age"},new String[]{"张三","10"});
除此之外,还有多条数据一起插入的方法
DBInsertOperator dbOperator = new DBInsertOperator(this);
//创建集合
ArrayList values_arr = new ArrayList<>();
//把同时插入的数据加进集合里
values_arr.add(new String[]{"张三","15"});
values_arr.add(new String[]{"李四","14"});
values_arr.add(new String[]{"吴五","13"});
//执行操作,把整个集合的数据一起插入数据库
dbOperator.insertData(tablename,new String[]{"name","age"},values_arr);
删:也是简单两步
DBDeleteOperator dbDeleteOperator = new DBDeleteOperator(this);
//删除tableName这个表
dbDeleteOperator.deleteData(tableName);
//单个条件删除数据,例如删除id=1的数据
dbDeleteOperator.deleteData(tablename,"_id","1");
//多个条件删除数据,例如删除age为15,sex是男的数据
dbDeleteOperator.deleteData(tablename,"age,sex","15","男");
查:需要DBQueryHelperForPerson这个类的帮助,它是DBQueryHelperFather的子类,作用是帮忙操作查出的数据,要赋值给哪个类,DBQueryHelperForPerson这个类就是把查到的值给Person这个类的个体或者集合的,具体类图下一章会讲到。
DBQueryOperator dbQueryOperator = new DBQueryOperator(this);
//查找某个表的全部数据
dbQueryOperator.queryData(tablename,new DBQueryHelperForPerson());
//单个条件查询,例如在tablename这个表中查age=16的数据
dbQueryOperator.queryData(tablename,new BQueryHelperForPerson(),"age","16");
//多条件查询,例如查表tablename中,name是张三,age是16岁的数据
dbQueryOperator.queryData(tablename,new DBQueryHelperForPerson(),new String[]{"name","age"},new String[]{"张三","11"});
改:改数据也很简单,而且有四种方式,分别是
①单个条件改单个字段的值
②单个条件改多个字段的值
③多个条件改单个字段的值
④多个条件改多个字段的值
这四种方式里面参数都是一一对应的,看注释就很容易理解了
//实例化DBUpdateOperator,准备开始修改
DBUpdateOperator dbUpdateOperator = new DBUpdateOperator(this);
//单个条件改单个字段的值:找出表中字段为age,数值为10的数据,然后改name="李四"
dbUpdateOperator.updateData(tablename,"age","10","name","李四");
//单个条件改多个字段的值:找出表中字段id=1的数据,然后改动,改动后变为age=16和phone="12345678910"
dbUpdateOperator.updateData(tablename,"id","1",new String[]{"age","phone"},new String[]{"16","12345678910"};
//多个条件改单个字段的值:找出表中字段name=张三,IDCard=9527的数据,然后改动age,改后是16
dbUpdateOperator.updateData(tablename,new String[]{"name","IDCard"},new String[]{"张三","9527"},"age","16");
//多个条件改多个字段的值:找出表中字段name=张三,IDCard=9527的数据,然后改动对应的age和phone,改后age=16,phone=12345678910
dbUpdateOperator.updateData(tablename,new String[]{"name","IDCard"},new String[]{"张三","9527"},new String[]{"age","phone"},new String[]{"16","12345678910"});
ok,就是这么简单的调用就能实现数据库增删改查,对于需要频繁操作数据库的小伙伴,你可以把里面的database.close()方法抽离出来,写在DBOperator里面,每次增删改查后自己去调用close()方法,本次封装主要是为了避开繁琐的sql语句操作。项目代码在最后的git地址里面,大家自行下载,有什么高见,希望大家可以赐教下。
项目模块的分析文章,要明天才能完成,我们下一章博客见。
git:https://github.com/WhyAllAIX/PullParserTool/blob/master/MyDB.rar