xUtils数据库是xUtils框架里包含的一部分。xUtils是一款快速开发android移动应用的框架,其包含了很多实用的android工具. 目前xUtils主要有四大模块:DbUtils模块、ViewUtils模块、HttpUtils模、BitmapUtils模块。
详细介绍请见:
kevin-gox的Utils3中对Sqlite数据库的操作 - CSDN博客 http://blog.csdn.net/tybaoerge/article/details/50414471
此处我只介绍此数据库的使用方法。
1.引入xUtils框架:
compile 'org.xutils:xutils:3.3.26'
添加权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:name=".BaseApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".activity.HomeActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
2.新建BaseApplication,建立数据库
注释很详细,就不多做介绍了:
import android.app.Application;
import org.xutils.DbManager;
import org.xutils.db.table.TableEntity;
import org.xutils.ex.DbException;
import org.xutils.x;
/**
* daoCinfig对象主要用于对于数据库的一些初始化设置
* 1.setDbName 设置数据库的名称
* 2.setDbDir 设置数据库存放的路径
* 3.setDbVersion 设置数据库的版本
* 4.setAllowTransaction(true) 设置允许开启事务
* 5.setDbUpgradeListener 设置一个版本升级的监听方法
*
* 注意:
* 数据库里面表的创建的时间,
* 只有在你对数据库里面的操作涉及到这张表的操作时,会先判断当前的表是否存在,
* 如果不存在,才会创建一张表,如果存在,才会进行相应的CRUD操作
*/
public class BaseApplication extends Application{
public static DbManager.DaoConfig daoConfig;
@Override
public void onCreate() {
super.onCreate();
//框架初始化
x.Ext.init(this);
//初始化数据库
initDb();
}
public static DbManager.DaoConfig getDaoConfig() {
return daoConfig;
}
/**
* 初始化数据库、建表
*/
protected void initDb() {
//本地数据的初始化
daoConfig = new DbManager.DaoConfig()
.setDbName("xutils_db") //设置数据库名
.setDbVersion(1) //设置数据库版本,每次启动应用时将会检查该版本号,
//发现数据库版本低于这里设置的值将进行数据库升级并触发DbUpgradeListener
.setAllowTransaction(true)//设置是否开启事务,默认为false关闭事务
.setTableCreateListener(new DbManager.TableCreateListener() {
@Override
public void onTableCreated(DbManager db, TableEntity<?> entity) {
}
})//设置数据库创建时的Listener
.setDbUpgradeListener(new DbManager.DbUpgradeListener() {
@Override
public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
if( oldVersion < newVersion ){
db.getDatabase().setVersion( newVersion);
}
}
});//设置数据库升级时的Listener,这里可以执行相关数据库表的相关修改,比如alter语句增加字段等
//.setDbDir(null);//设置数据库.db文件存放的目录,默认为包名下databases目录下
}
}
3.建立User和Order类(其实就是表table):
一个User对应多个Order
User
/**
* 如果需要添加联合唯一索引则可以在@Table注解加上
* onCreated = “CREATE UNIQUE INDEX unique_name ON table_name(column1, column2)”)
* 为表创建column1,column2联合唯一索引
*/
//为表创建NAME,EMAIL联合唯一索引
@Table(name = "user",
onCreated = "CREATE UNIQUE INDEX realative_unique ON user(NAME, EMAIL)")
public class User implements Serializable{
@Column(
name = "ID",
isId = true,
autoGen = true
)
private int id;
@Column(name = "NAME",property = "NOT NULL")//NAME字段非空
private String name;
@Column(name = "EMAIL",property = "NOT NULL")
private String email;
@Column(name = "MOBILE")
private String mobile;
@Column(name = "REGTIME")
private Date regTime;
@Column(name = "ORDER")
private List<Order> orderlist;
//国家
@Column(name = "country",property = "China")
private String country = "";
public User(){
}
public User(String name, String email, String mobile){
this.name = name;
this.email = email;
this.mobile = mobile;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public Date getRegTime() {
return regTime;
}
public void setRegTime(Date regTime) {
this.regTime = regTime;
}
public List<Order> getOrders(DbManager db) throws DbException {
return db.selector(Order.class).where("USERID", "=", this.id).findAll();
}
public void setOrderlist(List<Order> orderlist) {
this.orderlist = orderlist;
}
public String toString(){
return "{id=" + id + ", name=" + name + ", email=" + email + ", mobile="
+ mobile + ",country = " + country + "}\n";
}
}
o