Flutter中Sqlite數據庫封裝和使用

1、添加依賴,打開flutter項目根目錄下的pubspec.yaml 文件,添加依賴。

2、開始sqlite的數據操作基本封裝,我一般是在lib目錄下建一個 db的包,把數據庫相關操作的類都放在這個包下面,方面管理和維護,下面是的項目目錄。

3、DBManger類,將數據庫的創建,關閉等基礎操作同一封裝在一個類中統一管理。

DBManager這個類主要做了以下幾件事情:
  • 定義數據庫版本、數據庫名稱,獲取數據創建路勁,適配IOS;
  • 數據庫初始化,如果沒有數據庫則根據版本,名稱,路勁在本地創建數據庫並打開數據庫,如果已經有則打開數據庫;打開數據庫時有一個回調函數,在這個回調函數中我們可以默認創建張表,我這裏沒有創建表;
  • 返回當前打開的數據實例,如果沒有打開則先進行初始化,然後返回;實際上我們在上層調用的時候也是調用的
    getCurrentDatabase()這個方法,一般不會直接調用init()方法;
  • 判斷數據庫是否存在某一張表
    isTableExits();
  • 數據庫關閉,用完數據必須要進行數據庫關閉,釋放掉資源;

我們發現這個類裏面定義的都是數據庫相關的操作,沒有數據表相關的操作方法,我們接着往下看。

4、BaseDBProvider類,這個類定義創建數據庫表的基礎方法;這個類是一個抽象類,把具體創建數據庫表的sql暴露出去,讓子類去具體實現;由它直接和DBManager打交道,業務層實現這個接口即可。

這個類三個關鍵方法:

  • tableSqlString()抽象方法,由子類實現,返回創建表的具體sql;
  • tableName()抽象方法,由子類實現,返回要創建的表明;
  • tableBaseString()方法,返回表主鍵字段的基本sql定義,子類把其他字段的sql定義拼接到這個函數的返回值後面即可;
  • getDataBase()方法,返回一個數據庫實例

5、Dao類,這個類定義類某一張具體的表的操作方法,它直接集成BaseDBProvider類;我這裏叫做ChatDao,是對錶ChatMessage這張表的操作的類;

這個類的前一部分定義了這張表的表明,主鍵字段,創建表的sql語句等。

後面這部分定義了表的基本操作,我這裏只定義插入、查詢兩個操作,其實應該基本具備增、刪、改、查等操作。大家可以聚義反三將這張表的其他操作都在這裏定義。

插入方法的第二個參數使用了一個toMap()方法,這個方法是把要插入的實體轉換爲一個Map。

6、使用,在需要插入數據庫表或者查詢的地方,使用Dao的實例來進行具體的增刪改查操作。

 運行程序調用以上代碼,輸入結果如下:

以上就是我對sqflite 庫的整個封裝使用,非常的簡單,後面會在完善,讓他完全支持面向對象的操作。

 

Flutter 狀態管理之Reduxhttps://blog.csdn.net/qq_19979101/article/details/92645385

Websocket:https://blog.csdn.net/qq_19979101/article/details/93873731

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章