Android xUtils3.0使用手冊(二) - 數據庫操作


步驟: 

(1). 創建數據表;

(2). DaoConfig 獲取數據庫的配置信息;

(3).  獲取數據庫實例:  x.getDb(daoConfig);  

(4). 數據庫的增刪改查。

 

1. 創建數據表

    在這里要強調的是,數據庫里面表的創建的時間,只有在你對數據庫里面的操作涉及到這張表的操作時,會先判斷當前的表是否存在,如果不存在,才會創建一張表,如果存在,才會進行相應的CRUD操作。

 1 @Table(name = "person") 
 2 public class person {
 3     @Column(name = "ID", isId = true, autoGen = true)
 4     public int id;
 5     @Column(name = "NAME")
 6     public String name; // 姓名
 7     @Column(name = "AGE")
 8     public int age; // 年齡
 9     @Column(name = "SEX")
10     public String sex; // 性別
11
12 @Override
13 public String toString() { 14 return "person [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + "]"; 15 }
16 }

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

 1 @Check     check約束
 2 @Column    列名
 3 @Finder    一對多、多對一、多對多關系(見sample的Parent、Child中的使用)    
 4 @Foreign  外鍵
 5 @Id        主鍵,當為int類型時,默認自增。 非自增時,需要設置id的值
 6 @NoAutoIncrement  不自增
 7 @NotNull  不為空
 8 @Table    表名
 9 @Transient  不寫入數據庫表結構
10 @Unique     唯一約束

注解屬性

name (String)       :  表名稱    
isId (boolean)      :  是否為主鍵
autoGen (boolean)   :  是否自增(默認: false)
proprety (String)   :  是否為空(默認: NOT NULL) 

 

2. DaoConfig 獲取數據庫的配置信息

 1 //本地數據的初始化
 2 DbManager.DaoConfig daoConfig = new DbManager.DaoConfig()
 3         .setDbName("my_db.db") //設置數據庫名
 4         .setDbVersion(1) //設置數據庫版本,每次啟動應用時將會檢查該版本號,
 5         // 發現數據庫版本低於這里設置的值將進行數據庫升級並觸發DbUpgradeListener
 6         .setAllowTransaction(true) //設置是否開啟事務,默認為false關閉事務
 7         .setTableCreateListener(new DbManager.TableCreateListener() {
 8                 @Override
 9                 public void onTableCreated(DbManager dbManager, TableEntity<?> tableEntity) {
10                 }
11         })
12         .setDbOpenListener(new DbManager.DbOpenListener() {
13                 @Override
14                 public void onDbOpened(DbManager db) {
15                     // 開啟WAL, 對寫入加速提升巨大
16                     db.getDatabase().enableWriteAheadLogging();
17                 }
18         })
19         // 設置數據庫創建時的Listener
20         .setDbUpgradeListener(new DbManager.DbUpgradeListener() {
21                 @Override
22                 public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
23                     // TODO: ...
24                     // db.addColumn(...);
25                     // db.dropTable(...);
26                     // ...
27                     // or
28                     // db.dropDb();
29                 }
30         }); //設置數據庫升級時的Listener,這里可以執行相關數據庫表的相關修改,比如alter語句增加字段等
31         // .setDbDir(null);//設置數據庫.db文件存放的目錄,默認為包名下databases目錄下
32             
33 DBManager db = x.getDb(daoConfig);

 

3. 獲取數據庫實例

DbManager db = x.getDb(daoConfig);

 

4. 表 操作

通過DbManager這類我們可以做如下操作:

.getDaoConfig  // 獲取數據庫的配置信息
.getDatabase   // 獲取數據庫實例  
.replace       // 只有存在唯一索引時才有用 (慎重)
.dropTable     // 刪除表 
.addColumn     // 添加一列 
.dropDb        // 刪除數據庫


5. 增 操作

1 try {
2     List<person> list = new ArrayList<person>();
3     // ... 加載數據
4 
5     db.save(list); // 保存實體類或者實體類的List到數據庫
6     db.saveOrUpdate(list); // 保存或更新實體類或者實體類的List到數據庫,根據id對應的數據是否存在
7     db.saveBindingId(list); // 保存實體類或實體類的List到數據庫,如果該類型的id是自動生成的,則保存完后會給id賦值
8 } catch (DbException e) {
9 }

 

6. 刪 操作

1 try {
2     db.delete(person.class);//該方法是刪除表中的全部數據
3     db.deleteById(person.class, 12);//該方法主要是根據表的主鍵(id)進行單條記錄的刪除
4     db.delete(person.class, WhereBuilder.b("age", ">", "20"));//根據where語句的條件進行刪除操作 
5     List<person> findAll = db.selector(person.class).expr("age > 20").findAll();
6     db.delete(findAll);//根據實體bean進行對表里面的一條或多條數據進行刪除   
7 } catch (DbException e) {
8 }

 

7. 改 操作

 1 // 第一種
 2 try {
 3     List<Person> findAll = db.findAll(Person.class);
 4     for (Person person : findAll) {
 5         person.setAge(10);
 6     }
 7     db.update(findAll, "age"); //可以使對象、集合
 8 } catch (DbException e) {
 9 }
10 // 第二種
11 try {
12     PersonTable person = db.findById(Person.class, 1);
13     person.setAge(25);
14     db.update(person, "age");
15 } catch(DbException e){
16 }

 

8. 查 操作

 1 try {
 2     db.findById(person.class, 1);//通過主鍵的值來進行查找表里面的數據
 3     db.findFirst(person.class);//返回當前表里面的第一條數據 
 4     List<person> findAll = db.findAll(person.class);//返回當前表里面的所有數據 
 5     db.findDbModelAll(new SqlInfo("select * from person where age > 25"));
 6     DbModel model = db.findDbModelFirst(new SqlInfo("select * from person where age > 25"));
 7     model.getString("age");//model相當於游標
 8     List<person> findAll2 = db.selector(person.class).expr("age >10").findAll();//主要是用來進行一些特定條件的查找
 9 } catch (DbException e) {
10 }

 

9. 相關資料

 Android xUtils3.0使用手冊(一)- 基礎功能使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM