步骤: 

(1). 创建数据表;

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

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

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

1. 创建数据表

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

 @Table(name = "person")
public class person {
@Column(name = "ID", isId = true, autoGen = true)
public int id;
@Column(name = "NAME")
public String name; // 姓名
@Column(name = "AGE")
public int age; // 年龄
@Column(name = "SEX")
public String sex; // 性别
11
@Override
public String toString() {
return "person [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
16 }

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

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

注解属性

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

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

 //本地数据的初始化
DbManager.DaoConfig daoConfig = new DbManager.DaoConfig()
.setDbName("my_db.db") //设置数据库名
.setDbVersion(1) //设置数据库版本,每次启动应用时将会检查该版本号,
// 发现数据库版本低于这里设置的值将进行数据库升级并触发DbUpgradeListener
.setAllowTransaction(true) //设置是否开启事务,默认为false关闭事务
.setTableCreateListener(new DbManager.TableCreateListener() {
@Override
public void onTableCreated(DbManager dbManager, TableEntity<?> tableEntity) {
}
})
.setDbOpenListener(new DbManager.DbOpenListener() {
@Override
public void onDbOpened(DbManager db) {
// 开启WAL, 对写入加速提升巨大
db.getDatabase().enableWriteAheadLogging();
}
})
// 设置数据库创建时的Listener
.setDbUpgradeListener(new DbManager.DbUpgradeListener() {
@Override
public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
// TODO: ...
// db.addColumn(...);
// db.dropTable(...);
// ...
// or
// db.dropDb();
}
}); //设置数据库升级时的Listener,这里可以执行相关数据库表的相关修改,比如alter语句增加字段等
// .setDbDir(null);//设置数据库.db文件存放的目录,默认为包名下databases目录下 DBManager db = x.getDb(daoConfig);

3. 获取数据库实例

DbManager db = x.getDb(daoConfig);

4. 表 操作

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

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

5. 增 操作

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

6. 删 操作

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

7. 改 操作

 // 第一种
try {
List<Person> findAll = db.findAll(Person.class);
for (Person person : findAll) {
person.setAge(10);
}
db.update(findAll, "age"); //可以使对象、集合
} catch (DbException e) {
}
// 第二种
try {
PersonTable person = db.findById(Person.class, 1);
person.setAge(25);
db.update(person, "age");
} catch(DbException e){
}

8. 查 操作

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

9. 相关资料

☞  Android xUtils3.0使用手册(一)- 基础功能使用

Android xUtils3.0使用手册(二) - 数据库操作的更多相关文章

  1. Android xUtils3.0使用手册(一)- 基础功能使用

    xUtils3 其功能不得不说,简化了很多的开发步骤,可以说是非常好的开发工具,但是苦于没有完整的使用手册,下面是使用中的一些总结,不断完善. xUtils 版本 3.3.36 jar包下载地址 ht ...

  2. Android:SQLiteOpenHelper类(SQLlite数据库操作)详细解析

    前言 SQLite数据库操作在Android开发中非常常用 今天我将带大家全面了解关于SQLite数据库的操作(增.删.查.改) 目录 1. SQLite数据库介绍 SQLite是Android内置的 ...

  3. EF5.0中的跨数据库操作

    以前在用MVC + EF 的项目中,都是一个数据库,一个DbContext,因此一直没有考虑过在MVC+EF的环境下对于多个数据库的操作问题.等到要使用时,才发现这个问题也不小(关键是有个坑).直接说 ...

  4. Android学习笔记(十七)——数据库操作(下)

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 这一次我们来试一试升级数据库,并进行数据库的CRUD操作,其中, C 代表添加(Create) ,R 代表查询 ...

  5. Android内部自带的SQLite数据库操作dos命令

    1:什么叫做SQLite数据库 Android系统内核是Linux系统,Android系统很特殊,他自带了一个SQLite数据库,轻量型的一款嵌入式的数据库 它占用资源非常的低,在嵌入式设备中,可能只 ...

  6. Android学习--------实现增删改查数据库操作以及实现相似微信好友对话管理操作

    版权声明:本文为博主原创文章,转载请注明原文地址.谢谢~ https://blog.csdn.net/u011250851/article/details/26169409 近期的一个实验用到东西挺多 ...

  7. MySQL二:数据库操作

    阅读目录 一 知识储备 二 初识SQL语言 三 系统数据库 四 创建数据库 五 数据库相关操作 一 知识储备 MySQL数据库基本操作知识储备 数据库服务器:一台计算机(对内存要求比较高) 数据库管理 ...

  8. Android 7.0 UICC 分析(二)

    本文讲解UiccCard类 /frameworks/opt/telephony/src/java/com/android/internal/telephony/uicc/UiccCard.java U ...

  9. Android Afinal框架学习(一) FinalDb 数据库操作

    框架地址:https://github.com/yangfuhai/afinal 对应源码: net.tsz.afinal.annotation.sqlite.* net.tsz.afinal.db. ...

随机推荐

  1. Pytest系列(8) - 使用自定义标记mark

    如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 pytest 可以支持自定义 ...

  2. JAVA设计模式——(2)策略模式

    定义 定义一种算法,将每个算法都封装起来,并且使它们之间可以互换.是一种行为类模式. 举例 为了通俗易懂,我们拿各国的税率计算来举例子: 假设当前我们的程序只能支持计算中国和美国的税率: public ...

  3. c期末笔记(1)

    运算符 1.i++与++i的细微区别 i++与++i 和i++放在一个语句中,则i原本的值先被利用.语句结束后,i的值加一. i的原始值失效,直接加一. 2.int加法 整形数据(int)加上任何类型 ...

  4. 《mysql 必知必会》 速查指南

    目录 增 添加一整行 插入多行 删 删除指定行 删除所有行 改 查 简单检索 结果筛选 结果排序 结果过滤 创建字段 处理函数 数据分组 其他高级用法 文章内容均出自 <MySQL 必知必会&g ...

  5. 跟面试官侃半小时MySQL事务,说完原子性、一致性、持久性的实现

    提到MySQL的事务,我相信对MySQL有了解的同学都能聊上几句,无论是面试求职,还是日常开发,MySQL的事务都跟我们息息相关. 而事务的ACID(即原子性Atomicity.一致性Consiste ...

  6. flask-类视图

    flask-类视图 标准类视图 from flask import Flask, render_template, views, jsonify app = Flask(__name__) class ...

  7. 使用nginx转换HTTPS流量

    背景 公司卖了一个产品给甲方,甲方要求部署后,要以https来访问.甲方提供了证书信息和私钥,记录一下部署过程. 实现 1.思路 在我们产品服务器上部署一个nginx.证书信息也放在这个服务器上.外界 ...

  8. kafka的基本体系结构

    使用场景 大数据:数据量和速率激增,数据类型越来越复杂 应用开发:消息引擎,应用解耦,分布式存储,流处理 Kafka的体系结构 topic : 主题(消息的逻辑分类) 客户端: 细分为生产者(朝主题发 ...

  9. java解惑之常常忘记的事

    java解惑之常常忘记的事 2012-10-17 18:38:57|  分类: JAVA |  标签:基础知识  软件开发  |举报|字号 订阅     针对刚接触java的菜鸟来说,java基础知识 ...

  10. Mycat使用配置实践

    本来写了好多,关于配置的解释和使用以及注意,但是发现有点啰嗦含金量也不高,所以直接把实际使用的一个例子放着吧,供参考. <!DOCTYPE mycat:schema SYSTEM "s ...