EasySQL是由我独立开发的一款操作数据库的框架,特点是上手容易,使用简单。
目前版本是 v0.1.4
那么我就开始了,这款框架目前已有的功能如下:
平时不怎么鼓捣数据库的,用数据库的时候,感觉也就这几个功能哈!
那么我也不按照顺序来介绍这些功能应该怎么实现,我从开发的角度来解释如何使用这个框架吧!
第一步:将其添加到存储库末尾的根build.gradle中:
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
第二步:添加到依赖
dependencies {
implementation 'com.github.qixuefeng:EasySQL:0.1.4'
}
创建数据库:
// 创建数据库
EasySQL.with(this).createDB(“newdb“);
这里,我们创建了一个数据库名为newdb的数据库文件,这里是不用加.db
的,所以只需要输入数据库名字就行了。
多创建几个数据库,提供两种方式:
EasySQL.with(this).createDB("newdb1").createDB("newdb2").createDB("newdb3");
EasySQL.with(this).createDB("newdb1", "newdb2", "newdb3");
这两行的效果其实都一样都,都是创建3个数据库
删除数据库:
删除数据库的方法也很简单:
// 删除数据库
boolean isSucceed = EasySQL.with(this).deleteDatabase(dbName);
返回boolean类型代表是否删除成功,这个deleteDatabase方法里面也是传数据库名,不带.db
,话说可带可不带。
比如我要把刚刚创建的newdb2.db
给删了,我就可以:
EasySQL.with(this).deleteDatabase(“newdb2“);
查看数据库:
如果我们要查看已经创建了多少数据库了,我们可以使用如下代码:
// 查看所有数据库
ArrayList dbList = EasySQL.with(this).listName();
使用数据库:
使用指定数据库的代码是:
// 使用指定数据库
EasySQL.with(context).use(dbName);
使用指定数据库能干嘛呢,相当于决定使用了该数据库,这个时候,就可以在数据库中作新建表之类的操作了。
创建表:
创建表之前,需要新建一个实体类,并且这个实体类需要继承EasyTable类,比如:
public class StudentTable extends EasyTable {
private String name;
private int age;
private String addr;
public String getName() {
return name;
}
public StudentTable setName(String name) {
this.name = name;
return this;
}
public int getAge() {
return age;
}
public StudentTable setAge(int age) {
this.age = age;
return this;
}
public String getAddr() {
return addr;
}
public StudentTable setAddr(String addr) {
this.addr = addr;
return this;
}
@Override
public String toString() {
return "StudentTable{" +
"name='" + name + '\'' +
", age=" + age +
", addr='" + addr + '\'' +
'}';
}
}
这里有一点需要注意,EasySQL支持的数据类型一共有9种,对应:
Byte
Long
Short
Integer
Float
Double
String
Boolean
byte[]
而且实体类必须要有一个无参的构造方法方可生效。
既然实体类已经有了,那么怎么创建表呢,很简单:
// 创建表:
EasySQL.with(this).use(dbname).createTable(StudentTable.class)
// 连续创建表2种方式:
EasySQL.with(this).use(dbname).createTable(StudentTable.class).createTable(xxx.class);
EasySQL.with(this).use(dbname).createTable(xxx.class, xxx.class, xxx.class);
删除表:
删除表就显的简单多了:
// 删除表
EasySQL.with(context).use(dbName).deleteTable(StudentTable.class);
增:
新增数据到表中,我们需要用到一个EasyEntity类,这个类主要是起到一个打包作用,将数据打包成一个EasyEntity,然后将这个包裹丢给EasySQL,这样做的好处是,不局限只保存将一种数据保证到一个表中,可以同时添加多个表中的多个数据
,具体操作是:
EasyEntity easyEntity = new EasyEntity();
easyEntity
.add(new StudentTable().setName("张三").setAge(18).setAddr("北京"))
.add(new StudentTable().setName("李四").setAge(22).setAddr("上海"));
// 不仅可以添加StudentTable表的数据,还可以添加其他表的数据
EasySQL.with(this).use(dbname).save(easyEntity);
比如这里我们新增了2条数据
删:
删除数据就很简单了:
// 后面的两个参数跟Android自带的参数用法基本一样,这里即为删除名字为李四的数据
EasySQL.with(context).use(dbName).delete(StudentTable.class, "name = ?", "李四");
// 清空表中所有数据
EasySQL.with(context).use(dbName).clearTable(StudentTable.class);
改:
修改数据也十分简单:
StudentTable studentTable = new StudentTable().setName("老李四").setAge(89).setAddr("老上海");
EasySQL.with(this).use(dbname).update(studentTable, "name = ?", new String[]{"李四"});
新的实例替换老的实例即可,条件判断跟Android自带的参数用法一样
查:
现在我们来说说查询的方法,这里提供了很多种查询的方式,不过都归类为一个API:
ArrayList studentTables =
EasySQL.with(this).use(dbname).retrieve(各种参数);
retrieve的参数确实非常多,不过灵活性也是及其高的,如图:
这里就介绍第一个和最后一个,第一个,如果你查询数据的时候,没什么限制,只是单纯的想得到所有数据,那么只含有一个参数的方法十分适合你,现在我来讲讲参数最多的这个方法:
retrieve(Class classzz, String[] columns, String selection, String[] selectionArgs, String field, boolean isAsc)
一共有6个参数:
Class classzz 待查询的表
String[] columns 需要被查询的字段
String selection 查询条件,如:name = ?
String[] selectionArgs 查询条件的值,如:new String[]{"李四"}
String field 根据哪个字段排序
boolean isAsc 是否升序,是:升序;否:降序
选择灵活,可以随意选择搭配。
关于数据库的升级,EasySQL是十分便捷的,如果是需要新增字段,只需要在原来的表中新增字段,如:
public class StudentTable extends EasyTable {
private String name;
private int age;
private String addr;
// 新增的字段
private String gender;
public String getName() {
return name;
}
public StudentTable setName(String name) {
this.name = name;
return this;
}
public int getAge() {
return age;
}
public StudentTable setAge(int age) {
this.age = age;
return this;
}
public String getAddr() {
return addr;
}
public StudentTable setAddr(String addr) {
this.addr = addr;
return this;
}
public String getGender() {
return gender;
}
public StudentTable setGender(String gender) {
this.gender = gender;
return this;
}
}
然后调用:
EasySQL.with(this).updateAllTable("newdb1");
是不是很方便呢,不过还有更方便的,我们可以使用:
// 更新所有数据库中的所有表
EasySQL.with(this).updateAllTable();
我们甚至可以将这句话写到Application中,以后就可以自动更新表字段之类的了,直接去修改实体类结构即可,完全不用考虑什么更新啊,版本之类的东西,是不是这样就更方便了
EasySQL可以通过少量的操作,就可以对数据库进行指点江山,升级数据库也不需要考虑数据库版本的问题,尽量给大家带来简洁明了的感觉,目前EasySQL的功能相对比较基础,不过大部分常见的功能都支持,在往后的日子里,相信EasySQL会有更多的功能,希望大家支持!
EasySQL开源地址:https://github.com/qixuefeng/EasySQL