Android xUtils3.0使用手册 - 数据库操作

出门莫恨无人随,书中车马多如簇。这篇文章主要讲述Android xUtils3.0使用手册 - 数据库操作相关的知识,希望能为你提供帮助。
本篇主要介绍xUtils3.0如何创建数据表、数据库的配置信息、数据库的增删改查。步骤: 
(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) 4public int id; 5@Column(name = "NAME") 6public String name; // 姓名 7@Column(name = "AGE") 8public int age; // 年龄 9@Column(name = "SEX") 10public String sex; // 性别 11
12@Override
13public String toString()  { 14return "person [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + "]"; 15}
16 }

上表中包含了db相关注解:
1 @Checkcheck约束 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 9public void onTableCreated(DbManager dbManager, TableEntity< ?> tableEntity) { 10} 11}) 12.setDbOpenListener(new DbManager.DbOpenListener() { 13@Override 14public void onDbOpened(DbManager db) { 15// 开启WAL, 对写入加速提升巨大 16db.getDatabase().enableWriteAheadLogging(); 17} 18}) 19// 设置数据库创建时的Listener 20.setDbUpgradeListener(new DbManager.DbUpgradeListener() { 21@Override 22public void onUpgrade(DbManager db, int oldVersion, int newVersion) { 23// TODO: ... 24// db.addColumn(...); 25// db.dropTable(...); 26// ... 27// or 28// 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 { 2List< person> list = new ArrayList< person> (); 3// ... 加载数据 4 5db.save(list); // 保存实体类或者实体类的List到数据库 6db.saveOrUpdate(list); // 保存或更新实体类或者实体类的List到数据库,根据id对应的数据是否存在 7db.saveBindingId(list); // 保存实体类或实体类的List到数据库,如果该类型的id是自动生成的,则保存完后会给id赋值 8 } catch (DbException e) { 9 }

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

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

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

 
9. 相关资料【Android xUtils3.0使用手册 - 数据库操作】?   android xUtils3.0使用手册(一)- 基础功能使用

    推荐阅读