xUtils3的使用教程
首先在build.gradle下的dependencies下添加引用。
implementation 'org.xutils:xutils:3.3.36'
然后创建一个表实体。
package com.kiba.learn;
import org.xutils.db.annotation.Column;
import org.xutils.db.annotation.Table;
@Table(name = "Cache_User", onCreated = "CREATE UNIQUE INDEX index_name ON Cache_User(id)")
public class Cache_User {
@Column(name = "id", isId = true)
private int id;
@Column(name = "realId")
public int realId;
@Column(name = "name")
public String name;
@Column(name = "loginName")
public String loginName;
@Column(name = "password")
public String password;
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getRealId() {
return realId;
}
public void setRealId(int realId) {
this.realId = realId;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
然后使用InitDatabaseConfig函数配置daoConfig。
然后使用db = x.getDb(daoConfig)获取数据库管理对象。
然后编写CacheLoginInfo()函数,里面可以写一些测试数据库的新建,更新,查询。
DbManager db;
public DbManager.DaoConfig daoConfig;
//返回值【/storage/emulated/0/Android/data/com.kiba.learn/files】
public String FilesPath_External;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FilesPath_External = getExternalFilesDir("").getAbsolutePath();
InitDatabaseConfig();
db = x.getDb(daoConfig);
CacheLoginInfo();
}
public void InitDatabaseConfig(){
File file=new File(FilesPath_External,"database");
daoConfig = new DbManager.DaoConfig()
.setDbName("kiba.db")
.setDbDir(file) // 不设置dbDir时, 默认存储在app的私有目录.
.setDbVersion(1)
.setDbOpenListener(new DbManager.DbOpenListener() {
@Override
public void onDbOpened(DbManager db) {
// 开启WAL, 对写入加速提升巨大
db.getDatabase().enableWriteAheadLogging();
}
})
.setDbUpgradeListener(new DbManager.DbUpgradeListener() {
@Override
public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
// TODO: ...
// db.addColumn(...);
// db.dropTable(...);
// ...
// or
// db.dropDb();
}
});
}
这里因为我们只使用xUtils3的数据库,所以不用对视图进行注入,即不用写下面这个代码。
x.view().inject(this); x.Ext.setDebug(false); //输出debug日志,开启会影响性能
如果要触发dbUpgradeListener升级数据库,可以使用下面代码。
InitDatabaseConfig(); DbManager db = x.getDb(daoConfig); // 升级数据库从版本3到版本4,并触发setDbUpgradeListener daoConfig.getDbUpgradeListener().onUpgrade(db,3,4);
也可以直接删除数据,后面使用时会重新创建。
try {
db.dropDb();
} catch (DbException e) {
e.printStackTrace();
}
public void TestDatabase() {
try {
DbManager db = x.getDb(daoConfig);
Cache_User sqliteUser = new Cache_User();
sqliteUser.name = "测试" + System.currentTimeMillis();
//db.save(parent);
db.saveBindingId(sqliteUser);//保存对象关联数据库生成的id
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -1);
calendar.add(Calendar.HOUR, 3);
List<Cache_User> list = db.selector(Cache_User.class)
.where("id", "<", 54)
.and("time", ">", calendar.getTime())
.orderBy("id")
.limit(10).findAll();
if (list.size() > 0) {
}
// test update
sqliteUser.name = "hahaha123" + System.currentTimeMillis();
db.update(sqliteUser);
db.update(sqliteUser, "name", "email");
db.update(Cache_User.class,
WhereBuilder.b("id", "=", 1).and("isAdmin", "=", true),
new KeyValue("name", "test_name"), new KeyValue("isAdmin", false));
List<DbModel> dbModels = db.selector(Cache_User.class)
.groupBy("name")
.select("name", "count(name) as count").findAll();
} catch (Throwable e) {
}
}
PS:获取Activity中的fragment使用如下代码:
Fragment currentFragment = FragmentManager.findFragment(this.findViewById(R.id.fragment_content_main));
----------------------------------------------------------------------------------------------------
注:此文章为原创,任何形式的转载都请联系作者获得授权并注明出处!
若您觉得这篇文章还不错,请点击下方的【推荐】,非常感谢!

https://www.cnblogs.com/kiba/

浙公网安备 33010602011771号