【问题标题】:Flutter Insert data into the database sqfliteFlutter 将数据插入数据库 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 个表重新设计数据库架构:receiptsingredientsreceipt_ingredient。最后一个会将收据链接到几种成分(2 列:receipt_fk 和成分_fk),因此对于 1 个收据,您将拥有成分的所有 ID。这比连接列表要好。
  • 你能给我举个例子吗?

标签: sql flutter dart sqflite


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 2019-04-07
    • 2019-09-20
    • 2021-09-14
    • 2019-12-03
    • 2023-02-07
    • 2020-08-19
    相关资源
    最近更新 更多