如何在C ++ ODBC中使用多个记录集

时间:2008-10-07 19:12:34

标签: c++ sql-server odbc

我正在尝试简化在多个表中存储信息的复杂过程,并将它们链接到中央表。使用每个表中生成的IDENTITY值进行链接以提供唯一链接。我知道我可以使用SET NOCOUNT ON和SELECT @@ identity的组合来获取每个标识,但这仍然需要我为每个表调用一个单独的SQLExecute()。我已经阅读过几十篇文章,说ADO可以使用ODBC驱动程序处理多个记录集,所以问题是我如何在没有ADO的情况下做到这一点?

我已经将所有标准ODBC内容封装成ADO的类似行为。我基本上只需要知道ODBC API调用将允许我重新创建ADO的NextRecorset()。

我正在研究MS SQL 7和MS SQL 2005的组合,使用SQL Server ODBC或SQL Native Client驱动程序。

结束目标:

SET NOCOUNT ON;
INSERT INTO TableA (data) VALUES ('a');
SELECT @@identity AS  NewID;
INSERT INTO TableB (data) VALUES ('b');
SELECT @@identity AS  NewID;
INSERT INTO TableC (data) VALUES ('c');
SELECT @@identity AS  NewID;
...
RS = DB.OpenRecordset()
RS.MoveFirst()
A_ID = RS.GetValue("id")
RS.NextRecordset()
RS.MoveFirst()
B_ID = RS.GetValue("id")
RS.NextRecordset()
RS.MoveFirst()
C_ID = RS.GetValue("id")

1 个答案:

答案 0 :(得分:0)

使用SQLMoreResults()调用作为NextRecordSet()函数的模拟。

但是如果你愿意让你的执行由INSERT ...; SELECT @@IDENTITY组成,你可能不需要它。因为从这个语句返回的唯一结果是身份,所以你不必费心{{1 }}