sql 服务器 - 如何在 ODBC 中使用C++多个记录集
sql server - How do I work with Multiple Recordsets in C++ 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 Drivers。
最终目标:
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")
使用 SQLMoreResults()
调用作为 NextRecordSet()
函数的模拟。
但是,如果您愿意使执行包含INSERT ...; SELECT @@IDENTITY
,则可能不需要它 由于此语句返回的唯一结果是标识,因此您无需为SQLMoreResults()
而烦恼。
相关文章:
- 将两个数组中的差异记录在第三个数组中
- 禁止在控制台上记录谷神星
- 创建 Spdlog 异步文件记录器时遇到困难
- fastrtps:如何在发布/订阅级别使用 DDS 历史记录?
- 如何将自定义记录器与websocketpp一起使用?
- C++结构到德尔福记录dll调用
- 如何判断SSL_read是否已经接收并处理了来自单个消息的所有记录
- 如何实现具有多个平台__FILE__和__LINE__信息的 C/C++ 可变参数日志记录宏?
- 我是否可以使用 win32 句柄以编程方式记录发送到/接收到 USB/COM 的内容
- 使用 Doxygen 记录枚举类值,而不启用EXTRACT_ALL
- 在C++中隐藏键盘记录器的控制台窗口
- 堆栈上的最大激活记录数
- 记录Doxygen中的命名
- 为什么Qt Creator的应用程序输出不能从spdlog记录器打印
- 在SQLITE数据库中写入记录需要花费大量时间.如何提高刀片操作效率?
- Qt 错误:QSqlQuery::value:尝试从表中检索统计信息时未定位在有效记录上 (QComboBox)
- 麻烦得到提升::记录器编译
- C++ 中混合二进制/文本日志记录的最佳做法
- 修改链表中的记录C++
- 使用流在C++中记录信息