我有 cities
表并尝试在创建数据库时插入城市。表结构非常简单,只有id
和 name
柱子。
在 onCreate
我的数据库类的方法,我用这个命令创建表:
var tblCities = 'cities';
await db.execute('CREATE TABLE $tblCities (id INTEGER PRIMARY KEY, name TEXT)');
我有
Cities
模型类与 fromMap
和 toMap
方法。大约有 350 个城市,我想将它们插入表格中。
问 什么是最好和最简单的方法来做到这一点?
这在我脑海中浮现:
for
循环遍历整个列表 toMap
创建城市 map 方法 db.insert
循环内的方法 我不确定,但这似乎是愚蠢的方法,所以考虑更好和优化的解决方案......
最佳答案
正如@chunhunghan 提到的,您可以使用批处理插入批量数据。
以下是分步指南:
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/