C ++ ODBCで複数のレコードセットを使用する方法
-
05-07-2019 - |
質問
情報を複数のテーブルに保存し、それらを中央のテーブルにリンクする複雑なプロセスを合理化しようとしています。リンクは、各テーブルで生成されたIDENTITY値を使用して行われ、一意のリンクを提供します。 SET NOCOUNT ONとSELECT @@ identityの組み合わせを使用して各IDを取得できることは知っていますが、それでも各テーブルに対して個別のSQLExecute()を呼び出す必要があります。私はADOがODBCドライバーを使用して複数のレコードセットを処理できるという記事を何十も読んでいます。そのため、質問はADOなしでどうすればいいですか?
ADOに似た動作をするために、すべての標準ODBCをすでにカプセル化しました。基本的には、ODBC API呼び出しでADOのNextRecorset()を再作成できるかどうかを知る必要があります。
必要に応じて、SQL Server ODBCまたはSQL Native Clientドライバーのいずれかを使用して、MS SQL 7とMS SQL 2005の組み合わせに取り組んでいます。
目標の終了:
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")
解決
NextRecordSet()
関数の類似物として、 SQLMoreResults()
呼び出しを使用します。
ただし、実行を INSERT ...で構成する場合は、おそらく必要ありません。 SELECT @@ IDENTITY
このステートメントから返される結果はIDのみであるため、 SQLMoreResults()
に煩わされる必要はありません。
所属していません StackOverflow