Flutter 将数据插入数据库 sqflite
Posted
技术标签:
【中文标题】Flutter 将数据插入数据库 sqflite【英文标题】:Flutter Insert data into the database sqflite 【发布时间】:2021-07-09 11:29:30 【问题描述】:我需要一次一个 insert
data
并将其添加到 string
的末尾,但是我正在做的事情是覆盖 data
for (var i = 0; i< isChecked.length; i++)
receipt.ingredientsReceipt = isChecked[i]; //receipt is table name, ingredientsReceipt is column name
print(isChecked[i]);// isChecked is my list containing [ING 1, ING 2, ING 3]
输出:
I/flutter ( 5360): ING 1
I/flutter ( 5360): ING 2
I/flutter ( 5360): ING 3
这是我的SQL
:
CREATE TABLE receipt(id INTEGER PRIMARY KEY AUTOINCREMENT, nameReceipt TEXT, descReceipt TEXT, ingredientsReceipt TEXT)
输出SQL
:
id: null, nameReceipt: TEST, descReceipt: TEST, ingredientsReceipt: ING 3
我需要它是这样的:
id: 1, nameReceipt: TEST, descReceipt: TEST, ingredientsReceipt: ING 1, ING 2, ING 3
【问题讨论】:
您应该使用 3 个表重新设计数据库架构:receipts
、ingredients
和 receipt_ingredient
。最后一个会将收据链接到几种成分(2 列:receipt_fk 和成分_fk),因此对于 1 个收据,您将拥有成分的所有 ID。这比连接列表要好。
你能给我举个例子吗?
【参考方案1】:
根据我的评论,使用 3 个表格:
收据
id | nameReceipt | descReceipt |
---|---|---|
1 | name1 | desc1 |
2 | name2 | desc2 |
成分
id | name |
---|---|
1 | ingr1 |
2 | ingr2 |
3 | ingr3 |
4 | ingr4 |
RECEIPT_INGREDIENT
id | receipt_fk | ingredient_fk |
---|---|---|
1 | 1 | 1 |
2 | 1 | 2 |
3 | 1 | 3 |
4 | 2 | 3 |
5 | 2 | 4 |
因此,当您想获得收据时,您必须编写查询以从收据中选择数据,加入receipt_ingredient(其中receipt.id =receipt_ingredient.receipt_fk),加入成分(其中receipt_ingredient.ingredeint_fk = 成分.id)。
Ex. 获取收据 id = 1 =>
id | nameReceipt | descReceipt | receipt_fk | ingredient_fk | name |
---|---|---|---|---|---|
1 | name1 | desc1 | 1 | 1 | ingr1 |
1 | name1 | desc1 | 1 | 2 | ingr2 |
1 | name1 | desc1 | 1 | 3 | ingr3 |
【讨论】:
以上是关于Flutter 将数据插入数据库 sqflite的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Flutter 中使用 sqflite 插入特殊字符?