本篇博客将介绍一下xUtils的数据库模块,想要学习的小伙伴请先看第一篇注解模块完成第一第二步哦。
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)
.setDbDir(new File(Environment.getExternalStorageDirectory() + "/zsy"))
.setDbOpenListener(new DbManager.DbOpenListener() {
@Override
public void onDbOpened(DbManager db) {
db.getDatabase().enableWriteAheadLogging();
}
});
private DbManager dbManager = x.getDb(daoConfig);
2.创建数据库和表并插入数据,我们需要先创建一个实体类也就是表了。指定表名,字段
@Table(name = "zhong")
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 {
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);
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框架也就说完了大致使用也就是这些了,想要具体学习的小伙伴可以去极客学院学习一下。