gpt4 book ai didi

mysql - 迭代 1 个到多个表时丢失结果

转载 作者:行者123 更新时间:2023-11-29 09:20:28 25 4
gpt4 key购买 nike

我的困境是,在访问外键表时,我丢失了主表中的结果集。我需要在查询另一个表时保存第一个表查询的结果。

场景:
我正在实现一个食谱数据库系统。每个食谱可以有 1 到多种成分。为了解决一对多关系,我为成分创建了一个单独的表。

我有一个食谱表:

  ID_Recipe: primary key, integer;   
Recipe_Title: CHAR(128);

还有成分表:

ID_Ingredient:  PRIMARY KEY, INTEGER;  
ID_Recipe: INTEGER NOT NULL;
Ingredient_Title: CHAR(64)

在我的程序中,我有一个包含成分向量的食谱对象:

struct Ingredient
{
int ID;
int recipe_ID;
std::string title;
};

struct Recipe
{
int ID;
std::string title;
std::vector<Ingredient> recipe_ingredients;
};

为了对表中的配方执行每次迭代,我必须从数据库加载它。为了完成食谱,我必须加载与食谱相关的所有成分。

问题是,当我加载原料时,我丢失了食谱的结果集。 MySQL Connector C++ 一次只能处理一个结果集。我也没有成功复制结果(当表大小增大时,我可能不想加载整个结果)。

那么,当我从成分表中搜索和加载时,如何保持指向配方表的光标或指针?

这是我想做的:

  1. 对于表中的每个食谱,请执行以下操作:
  2. 将配方结果行数据读入配方变量。
  3. 使用配方 ID 选择全部成分其中 Recipe.ID_Recipe =成分.ID_Recipe。
  4. 从成分表加载结果到 Recipe 变量的向量中。
  5. 将配方对象传递给回调功能。
  6. 前进到表中的下一个食谱。
  7. 结束

预先感谢您的任何建议。
(我正在使用 MySQL、MySQL Connector C++、Visual Studio 2008 - C++)

最佳答案

AFAICT,MySQL Connector/C++ 文档中没有任何内容表明打开第二个结果集会使第一个结果集失效。请发布您用于处理行的代码。您可能正在做一些过早关闭第一个结果集的事情。

关于mysql - 迭代 1 个到多个表时丢失结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2001131/

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