xutils简介:
xUtils 是一个工具类的集合体,其中包含许多实用的Android工具,主要包含四大模块:
1、ViewUtils的模块(点击进入)
2、 HttpUtils的模块
3、 BitmapUtils的模块
4、 DBUtils的模块
开始学习DbUtils:
- 需要添加访问存储卡的权限
- 定义数据表对应的类,必须是public的非内部类(单独一个类文件)
一、定义数据表对应的类
//指定表名,如果不用这个注解,表名默认为包名+类名
@Table(name="tbl_User")
public class User {
//主键,必须有,自增长
@Id
private int id;
//指定列名,如果不指定,就是字段名
//Unique注解代表字段唯一,不重复
@Column(column="username")
@Unique
private String name;
//column可以省略
//非空
@Column
@NotNull
private String email;
//规定年龄值的范围
@Check("20 <= age and age <= 130")
private int age;
//getxxx
//setxxx
//tostring
//......
常见的DB注解:
@Check check约束
@Column 列名
@Id 主键,一般设置为int,自增长
@NotNull 不为空
@Table 表名
@Unique 唯一约束
二、创建数据库
一般情况下、我们为了保证操作的数据库是同一个数据库,会数据定义在自定义的application中,将这个application和工程关联,那么就可以保证
了我们所操作的数据库是同一个了
package com.qf.xutils_dbutils;
import ...
/**
* Created by LiuTao008
* on 2016/1/20.
*/
public class MyApplication extends Application{
//定义一个全局的DButils
public static DbUtils dbUtils;
@Override
public void onCreate() {
super.onCreate();
createDbUtilsWithCfg();
}
/**
* 创建DbUtils ,不带任何配置
* 默认情况下,数据库创建在/data/data/包名/databases/xutils.db
*
*/
protected void creatDbUtils(){
dbUtils = DbUtils.create(this);
}
/**
* 创建数据库,指定数据库路径和名字
*/
protected void createDBUtilsWithDef(){
dbUtils = DbUtils.create(this,"/sdcard/xutils","user.db");
}
/**
* 创建数据库,使用配置
*/
protected void createDbUtilsWithCfg(){
//定义一个数据库配置
DbUtils.DaoConfig daoConfig = new DbUtils.DaoConfig(this);
daoConfig.setDbDir("/sdcard/xutils");
daoConfig.setDbName("user2.db");
dbUtils = DbUtils.create(daoConfig);
}
}
三、数据库操作(增删改查)
1.插入数据:
/**
*插入数据
*/
protected void insert(){
User user1 = new User();
user1.setName("张三");
user1.setAge(24);
user1.setEmail("zs@163.com");
User user2 = new User();
user2.setName("李四");
user2.setAge(20);
user2.setEmail("ls@163.com");
List<User> userList = new ArrayList<>();
userList.add(user1);
userList.add(user2);
try {
MyApplication.dbUtils.saveAll(userList);
} catch (DbException e) {
e.printStackTrace();
}
}
2.查询数据
/**
* 查询数据,返回的数据是一个集合,我们可以通过其他字段在这个集合中查找我们想要的数据
*/
protected void query(){
try {
List<User> userList = MyApplication.dbUtils.findAll(User.class);
Log.d("query",userList.toString());
} catch (DbException e) {
e.printStackTrace();
}
}
3.更新数据
/**
* 更新数据
*1.通过id,得到对应的数据对象
*2.修改值
*3.执行更新操作update
*/
protected void update(){
try {
User user = MyApplication.dbUtils.findById(User.class, 2);
user.setAge(80);
MyApplication.dbUtils.update(user, "age");
} catch (DbException e) {
e.printStackTrace();
}
}
4.删除数据
/**
* 删除数据
*/
protected void delete() {
User user = new User();
user.setId(1);//删除id为1的数据,一点非常重要的是,id是自增长的,并且是从1开始计数的
try {
MyApplication.dbUtils.delete(user);
} catch (DbException e) {
e.printStackTrace();
}
}