Flutter:在数据库中插入数据列表的有效方法

标签 flutter dart bulkinsert sqflite

我有 cities表并尝试在创建数据库时插入城市。表结构非常简单,只有idname柱子。

onCreate我的数据库类的方法,我用这个命令创建表:

var tblCities = 'cities';
await db.execute('CREATE TABLE $tblCities (id INTEGER PRIMARY KEY, name TEXT)');

我有 Cities模型类与 fromMaptoMap方法。

大约有 350 个城市,我想将它们插入表格中。

什么是最好和最简单的方法来做到这一点?

这在我脑海中浮现:
  • 创建城市列表
  • 使用 for循环遍历整个列表
  • 使用 toMap 创建城市 map 方法
  • 调用 db.insert循环内的方法

  • 我不确定,但这似乎是愚蠢的方法,所以考虑更好和优化的解决方案......

    最佳答案

    正如@chunhunghan 提到的,您可以使用批处理插入批量数据。

    以下是分步指南:

  • 准备好你的 json 文件,例如 cities.json(创建 csv 数据文件并使用 csv 到 json 转换器,如 this)
  • 在您的 cities.json 目录中添加 assets 文件
  • 像这样在 pubspec.yaml 中定义它:
    assets:
     - assets/cities.json
    
  • 将此代码粘贴到数据库类的 onCreate 方法中(确保其在创建表后查询)
    Batch batch = db.batch();
    
    String citiesJson = await rootBundle.loadString('assets/json/cities.json');
    List citiesList = json.decode(citiesJson);
    
    
    citiesList.forEach((val) {
      //assuming you have 'Cities' class defined
      Cities city = Cities.fromMap(val);
      batch.insert(tblCities, city.toMap());
    });
    
    batch.commit();
    

  • 就是这样! :)

    关于Flutter:在数据库中插入数据列表的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58074783/

    相关文章:

    flutter - 如何修复 "Failed assertion: line 227 pos 12: ' _allAds[id] !=null' : is not true. "?

    flutter - dart - 具有属性的接口(interface)

    Python:将数据批量插入 SQL Server

    amazon-web-services - 无法从亚马逊复制简单的哈希签名示例

    python - 在 Django(SQL、Python、Django)中使用 get_or_create() 批量插入的有效方法

    mysql - 优化计算一天中每一分钟平均值的 SQL 查询

    flutter - 在不同屏幕的自定义导航栏中更改所选项目的颜色

    audio - flutter ( Dart ): Get/Record audio stream from microphone and play it back immediately (real-time)

    flutter - 导航后流构建器未更新

    javascript - 从 Dart 中的 JavaScript 对象获取任意属性