gpt4 book ai didi

sqlite - Flutter解码一列SQLite查询结果

转载 作者:行者123 更新时间:2023-12-03 04:44:51 28 4
gpt4 key购买 nike

我的问题是我有一个带列'Rezepte'(Recipes)的sqlite数据库,其中包含列'Rezept_ID'和名称为('Rezept_Title')的列,并且得到如下输出:

{Rezept_ID: 0, Rezept_Title: [84, 104, 117, 110, 102, 105, 115, 99,104, 102, 105, 108, 101, 116, 32, 105, 110, 32, 90, 105, 109, 116, 45,83, 101, 115, 97, 109, 45, 75, 114, 117, 115, 116, 101, 32, 97, 117,102, 32, 67, 104, 105, 108, 105, 45, 77, 97, 110, 103, 111, 45, 83,97, 108, 97, 116]}


但我想举个例子(我不确定编码的含义):

{Rezept_ID: 0, Rezept_Title: 'spaghetti'}


我发现数字只是十进制编码,我的问题是:
如何始终仅对“Rezept_Title” anscii列进行编码?还是有 Dart 以明文形式显示的另一种编码?
我当前获取食谱的功能是:
getRecipes() async {
Database db = await DatabaseHelper.instance.database;

// get all rows
List<Map> result = await db.query('Rezepte');

// print the results
return result.forEach((row) => print(row));
}

最佳答案

看起来Rezept_Title是缓冲区的数组表示形式,而不是字符串。
要从缓冲区数组中返回字符串,请使用:new String.fromCharCodes(array)例如:

getRecipes() async {
Database db = await DatabaseHelper.instance.database;

// get all rows
List<Map> result = await db.query('Rezepte');

// copy List of mutable Maps the ugly way
List<Map> parsedResult = [];
result.forEach((r) => parsedResult.add(Map<String, dynamic>.from(r)));

// make Rezept_Title string again
parsedResult.forEach((r) =>
r['Rezept_Title'] = new String.fromCharCodes(r['Rezept_Title'])
);

// print the parsed results
return parsedResult.forEach((row) => print(row));
}
您应该得到以下内容的打印品:
{Rezept_ID: 0, Rezept_Title: "Thunfischfilet in Zimt-Sesam-Kruste auf Chili-Mango-Salat"}

PS:更好的方法是将字符串而不是缓冲区保存到数据库中(并转换当前记录)。

关于sqlite - Flutter解码一列SQLite查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62502794/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com