首页 > 解决方案 > 如何将列表对象存储到Sqlite

问题描述

我想将一个项目列表插入到 sqlflite TABLE 中,但不知道该怎么做。以及如何从表中获取数据。我已经初始化了数据库并创建了表。从与我的数据库链接的 PHP 文件中获取数据。但是当想在本地保存时,我遇到了问题。

“未处理的异常:DatabaseException(java.lang.String 无法转换为 java.lang.Integer)sql 'INSERT INTO orders(name, partner_id)VALUES (?, ?)' args [RMA/04925, [10304, SMEG CARE] ]}"

这是我的模型:

class Order {
String name;
List<dynamic> partnerId;
Order({this.name, this.partnerId});
Order.fromJson(Map<String, dynamic> json) {
name = json['name'];
partnerId = json['partner_id'].cast<dynamic>();
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['name'] = this.name;
data['partner_id'] = this.partnerId;
return data;
}
}

这是我从服务器获取 JSON 数据的 HTTP 方法:

static getOrders() async {
Response response;
Dio dio = Dio();
try {
final cookie = await LocalStorage.get(Config.COOKIE_KEY);
Map<String, dynamic> headers = {
'Cookie': cookie,
'content-type': 'application/json;charset=UTF-8'
};
Map<String, dynamic> queryParameters = {
'limit': 20,
};
response = await dio.get(Address.getOrders,
queryParameters: queryParameters, options: Options(headers: headers));
List responseJson = json.decode(response.data);
return responseJson.map((m) => Order.fromJson(m)).toList();
} catch (e) {
return print(e);
}
}
} 

这是我调用方法来获取 JSON 并保存到 SQLite 的地方:

@override
void initState() {
UserDio.getOrders().then((val) {
dbHelper.truncateTable();
insert(val);
});
insert(List<Order> orders) {
orders.forEach((item) {
dbHelper.save(item);
});
}

这是我将 JSON 保存到 SQLite 的 Save 方法

Future<Order> save(Order order) async {
var dbClient = await db;
await dbClient.insert(TABLE, order.toJson());
return order;
}

这是我的表结构

_onCreate(Database db, int version) async {
await db
.execute("CREATE TABLE $TABLE (name TEXT PRIMARY KEY, partnerId TEXT)");
}

标签: sqliteflutterdart

解决方案


推荐阅读