Android 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) 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; // 性别 1112 @Override13 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 @Override 14 public void onDbOpened(DbManager db) { 15 // 开启WAL, 对写入加速提升巨大 16 db.getDatabase().enableWriteAheadLogging(); 17 } 18 }) 19 // 设置数据库创建时的Listener 20 .setDbUpgradeListener(new DbManager.DbUpgradeListener() { 21 @Override 22 public 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 { 2 List<person> list = new ArrayList<person>(); 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<person> 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<Person> 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<person> 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<person> findAll2 = db.selector(person.class).expr("age >10").findAll();//主要是用来进行一些特定条件的查找 9 } catch (DbException e) { 10 }
9. 相关资料
☞ Android xUtils3.0使用手册(一)- 基础功能使用
转载于:https://www.cnblogs.com/steffen/p/5986953.html
Android xUtils3.0使用手册(二) - 数据库操作相关推荐
- Android xUtils3源码解析之数据库模块
本文已授权微信公众号<非著名程序员>原创首发,转载请务必注明出处. xUtils3源码解析系列 一. Android xUtils3源码解析之网络模块 二. Android xUtils3 ...
- Android 10.0 PackageManagerService(二)权限扫描-[Android取经之路]
摘要:PackageManagerService在systemReady()后,进行了/system/etc/permissions中的各种xml进行扫描,进行相应的权限存储,供以后使用 阅读本文大约 ...
- android 权限作用说明书,AndroidAcp 一句话搞定,简化 Android 6.0 系统复杂的权限操作 @codeKK Android开源站...
Acp 为 Android check permission 缩写,此库简化 Android 6.0 系统复杂的权限操作而编写. 特点 支持批量权限申请,不需要重写 onRequestPermissi ...
- java数据库编程(二) 数据库操作
关于数据库的连接方法已在java 数据库编程(一)JDBC连接Sql Server数据库一文中为大家介绍,还没有链接数据库的小伙伴请先点击查看. 今天首先为大家介绍一下数据库的连接及操作的核心类与接口 ...
- Android聊天软件的开发(二)--数据库
一,服务器数据库 服务器端的数据库是MySQL,使用Hibernate实现数据的增删改查.主要存储的数据有:用户信息,好友列表. 其中,好友列表中的friend_list ...
- Android学习--------实现增删改查数据库操作以及实现相似微信好友对话管理操作...
近期的一个实验用到东西挺多,特地总结一下. 要求功能: 1.第一个页面加入歌曲名和歌手,跳到第二个页面列表显示全部记录.使用sqlite数据库 2.对于第二个页面显示的信息能够进行删除和改动操作,并自 ...
- Android内部自带的SQLite数据库操作dos命令
1:什么叫做SQLite数据库 Android系统内核是Linux系统,Android系统很特殊,他自带了一个SQLite数据库,轻量型的一款嵌入式的数据库 它占用资源非常的低,在嵌入式设备中,可能只 ...
- android xutils3.0获取服务器图片,Android端使用xUtils3.0实现文件上传
privatevoidupLoadOnClick(View v) { String upUrl ="/mnt/sdcard/pic/test.jpg";//指定要上传 ...
- Android10.0 日志系统分析(二)-logd、logcat架构分析及日志系统初始化-[Android取经之路]
摘要:本节主要来讲解Android10.0 日志系统的架构分析,以及logd.logcat的初始化操作 阅读本文大约需要花费15分钟. 文章首发微信公众号:IngresGe 专注于Android系统级 ...
- Android 8.0学习(27)--- SystemUI(二)启动流程和初始化
Android 8.0 SystemUI(二):启动流程和初始化 这篇的话,将对SystemUI的启动和大体的初始化作描述.篇幅应该比上篇多了些.哈哈. 老样子,先上目录,简洁明了. 概述 由于需要实 ...
最新文章
- 【学习笔记1】CentOS 下载
- html属性选择器怎么写,html – 具有“type”属性与make-up属性的CSS属性选择器和区分大小写...
- SpringBoot中将thymeleaf升级到3.0或以上版本
- centos标准分区调整大小_去繁化简解决CentOS下调整home和根分区大小的方法
- 大数据学习(08)--Hadoop中的数据仓库Hive
- Linux(debian7)操作基础(十二)之文件加密使用指南
- Springboot @Transactional Mysql事务 无效
- php 上传文件工具类,PHP 图片上传工具类(支持多文件上传)
- SwitchHost下载安装和配置
- Gom引擎如何进行“称号系统”的设置详细介绍
- IE11 兼容 ES6
- proxmox 控制台无法连接_Proxmox VE 5.4中的NAT网络-重置网络接口后,VM的连接消失了...
- STM32——C语言基础
- 2022江西省职业院校技能大赛春季赛网络安全赛项样题
- 【线段树合并】【bzoj4399】: 魔法少女LJJ
- 二维几何图形创作方法(Geometry2D)
- CodeVS2505 上学路线
- Windows Office 2019 很抱歉,此功能看似已中断,并需要修复
- 基于Matlab的静电场仿真实验--求均匀带电球壳的电场
- Java编程思想读书笔记——第十章:内部类