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

 

 

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