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/