Как мне работать с несколькими наборами записей в C ++ ODBC - PullRequest
0 голосов
/ 07 октября 2008

Я пытаюсь упростить сложный процесс хранения информации в нескольких таблицах и их привязки к центральной таблице. Связывание происходит с использованием значений IDENTITY, сгенерированных в каждой таблице, чтобы обеспечить уникальное связывание. Я знаю, что могу использовать комбинацию SET NOCOUNT ON и SELECT @@ identity, чтобы получить каждую идентификацию, но для этого все равно требуется, чтобы я вызывал отдельный SQLExecute () для каждой таблицы. Я прочитал десятки статей о том, что ADO может обрабатывать несколько наборов записей с помощью драйвера ODBC, поэтому вопрос заключается в том, как мне сделать это без ADO?

Я уже инкапсулировал все стандартные вещи ODBC для поведения, аналогичного ADO. Мне просто нужно знать, какие вызовы ODBC API позволят мне воссоздать ADR NextRecorset ().

Я работаю над комбинацией MS SQL 7 и MS SQL 2005, используя либо ODBC для SQL Server, либо драйверы собственного клиента SQL в зависимости от ситуации.

Конечная цель:

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 голосов
/ 07 октября 2008

Используйте вызов SQLMoreResults() как аналог функции NextRecordSet().

Однако вам, вероятно, не нужно, чтобы, если вы хотите, чтобы ваши исполнения состояли из INSERT ...; SELECT @@IDENTITY Поскольку единственным результатом, возвращаемым из этого оператора, является идентификатор, вам не нужно беспокоиться о SQLMoreResults().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...