我的困境是我在访问外键表时从主表中丢失了我的 ResultSet。我需要在查询另一个表时保存第一个表查询的结果。
Scenerio:
我正在实施一个食谱数据库系统。每个食谱可以有 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 连接器 C++一次只能处理一个结果集。我在复制结果时也没有运气(当表大小增加时,我可能不想加载整个结果)。
那么,当我从配料表中搜索和加载时,如何维护指向配方表的光标或指针?
这是我想做的事情:
- 对于表中的每个食谱,请执行以下操作:
- 将配方结果行数据读入配方变量。
- 使用配方 ID 选择所有配方,其中 Recipe.ID_Recipe = Ingredient.ID_Recipe。
- 将成分表中的结果加载到配方变量的向量中。
- 将配方对象传递给回调函数。
- 前进到表中的下一个食谱。
- 结束
在此先感谢您的任何建议。
(我正在使用 MySQL、MySQL 连接器 C++、Visual Studio 2008 - C++)