博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android xUtils3.0使用手册(二) - 数据库操作
阅读量:4137 次
发布时间:2019-05-25

本文共 4462 字,大约阅读时间需要 14 分钟。

步骤: 

(1). 创建数据表;

(2). DaoConfig 获取数据库的配置信息;

(3).  获取数据库实例:  x.getDb(daoConfig);  

(4). 数据库的增删改查。

 

1. 创建数据表

    在这里要强调的是,数据库里面表的创建的时间,只有在你对数据库里面的操作涉及到这张表的操作时,会先判断当前的表是否存在,如果不存在,才会创建一张表,如果存在,才会进行相应的CRUD操作。

1 @Table(name = "person")  2 public class person { 3     @Column(name = "ID", isId = true, autoGen = true) 4     public int id; 5     @Column(name = "NAME") 6     public String name; // 姓名 7     @Column(name = "AGE") 8     public int age; // 年龄 9     @Column(name = "SEX")10     public String sex; // 性别11 12     @Override 13     public String toString() {
14 return "person [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + "]";15 } 16 }

上表中包含了db相关注解:

1 @Check     check约束 2 @Column    列名 3 @Finder    一对多、多对一、多对多关系(见sample的Parent、Child中的使用)     4 @Foreign   外键 5 @Id        主键,当为int类型时,默认自增。 非自增时,需要设置id的值 6 @NoAutoIncrement  不自增 7 @NotNull  不为空 8 @Table    表名 9 @Transient  不写入数据库表结构10 @Unique     唯一约束

注解属性

name (String)       :  表名称    isId (boolean)      :  是否为主键autoGen (boolean)   :  是否自增(默认: false)proprety (String)   :  是否为空(默认: NOT NULL)

 

2. DaoConfig 获取数据库的配置信息

1 //本地数据的初始化 2 DbManager.DaoConfig daoConfig = new DbManager.DaoConfig() 3         .setDbName("my_db.db") //设置数据库名 4         .setDbVersion(1) //设置数据库版本,每次启动应用时将会检查该版本号, 5         // 发现数据库版本低于这里设置的值将进行数据库升级并触发DbUpgradeListener 6         .setAllowTransaction(true) //设置是否开启事务,默认为false关闭事务 7         .setTableCreateListener(new DbManager.TableCreateListener() { 8                 @Override 9                 public void onTableCreated(DbManager dbManager, TableEntity
tableEntity) {10 }11 })12 .setDbOpenListener(new DbManager.DbOpenListener() {13 @Override14 public void onDbOpened(DbManager db) {15 // 开启WAL, 对写入加速提升巨大16 db.getDatabase().enableWriteAheadLogging();17 }18 })19 // 设置数据库创建时的Listener20 .setDbUpgradeListener(new DbManager.DbUpgradeListener() {21 @Override22 public void onUpgrade(DbManager db, int oldVersion, int newVersion) {23 // TODO: ...24 // db.addColumn(...);25 // db.dropTable(...);26 // ...27 // or28 // db.dropDb();29 }30 }); //设置数据库升级时的Listener,这里可以执行相关数据库表的相关修改,比如alter语句增加字段等31 // .setDbDir(null);//设置数据库.db文件存放的目录,默认为包名下databases目录下32 33 DBManager db = x.getDb(daoConfig);

 

3. 获取数据库实例

DbManager db = x.getDb(daoConfig);

 

4. 表 操作

通过DbManager这类我们可以做如下操作:

.getDaoConfig  // 获取数据库的配置信息.getDatabase   // 获取数据库实例  .replace       // 只有存在唯一索引时才有用 (慎重).dropTable     // 删除表 .addColumn     // 添加一列 .dropDb        // 删除数据库

5. 增 操作

1 try {2     List
list = new ArrayList
();3 // ... 加载数据4 5 db.save(list); // 保存实体类或者实体类的List到数据库6 db.saveOrUpdate(list); // 保存或更新实体类或者实体类的List到数据库,根据id对应的数据是否存在7 db.saveBindingId(list); // 保存实体类或实体类的List到数据库,如果该类型的id是自动生成的,则保存完后会给id赋值8 } catch (DbException e) {9 }

 

6. 删 操作

1 try {2     db.delete(person.class);//该方法是删除表中的全部数据3     db.deleteById(person.class, 12);//该方法主要是根据表的主键(id)进行单条记录的删除4     db.delete(person.class, WhereBuilder.b("age", ">", "20"));//根据where语句的条件进行删除操作 5     List
findAll = db.selector(person.class).expr("age > 20").findAll();6 db.delete(findAll);//根据实体bean进行对表里面的一条或多条数据进行删除 7 } catch (DbException e) {8 }

 

7. 改 操作

1 // 第一种 2 try { 3     List
findAll = db.findAll(Person.class); 4 for (Person person : findAll) { 5 person.setAge(10); 6 } 7 db.update(findAll, "age"); //可以使对象、集合 8 } catch (DbException e) { 9 }10 // 第二种11 try {12 PersonTable person = db.findById(Person.class, 1);13 person.setAge(25);14 db.update(person, "age");15 } catch(DbException e){16 }

 

8. 查 操作

1 try { 2     db.findById(person.class, 1);//通过主键的值来进行查找表里面的数据 3     db.findFirst(person.class);//返回当前表里面的第一条数据  4     List
findAll = db.findAll(person.class);//返回当前表里面的所有数据 5 db.findDbModelAll(new SqlInfo("select * from person where age > 25")); 6 DbModel model = db.findDbModelFirst(new SqlInfo("select * from person where age > 25")); 7 model.getString("age");//model相当于游标 8 List
findAll2 = db.selector(person.class).expr("age >10").findAll();//主要是用来进行一些特定条件的查找 9 } catch (DbException e) {10 }

 

9. 相关资料

☞  

转载地址:http://frovi.baihongyu.com/

你可能感兴趣的文章
字节跳动安卓开发实习生面试分享
查看>>
好书分享之——《能力陷进》
查看>>
阅读笔记《c++ primer》
查看>>
阅读笔记《C++标准程序库》
查看>>
基于mirror driver的windows屏幕录像
查看>>
C语言8
查看>>
Qt实现简单延时
查看>>
qml有关矩形说明
查看>>
在qt中使用QSplitter设置初始比例setStretchFactor失效的解决方法
查看>>
repeater的使用
查看>>
qt msvc编译中文乱码解决
查看>>
qt实现点击出现窗口,点击其他任何地方窗口消失
查看>>
QML DropArea拖拉文件事件
查看>>
CORBA links
查看>>
读后感:>
查看>>
ideas about sharing software
查看>>
different aspects for software
查看>>
To do list
查看>>
Study of Source code
查看>>
如何使用BBC英语学习频道
查看>>