次の方法で共有


CCommand::Close

更新 : 2007 年 11 月

コマンドに関連付けられているアクセサ行セットを解放します。

void Close( );

解説

コマンドは、行セット、結果セット アクセサ、および (オプションで) パラメータ アクセサを使用します。パラメータをサポートせず、パラメータ アクセサを必要としないテーブルとは異なります。

コマンドを実行するときは、コマンドの後に Close と ReleaseCommand の両方を呼び出す必要があります。

同じコマンドを繰り返し実行する場合は、Execute を呼び出す前に Close を呼び出して、その都度結果セット アクセサを解放する必要があります。すべてのコマンドを実行した後に、ReleaseCommand を呼び出してパラメータ アクセサを解放します。もう 1 つの一般的なシナリオとして、出力パラメータを持つストアド プロシージャの呼び出しがあります。SQL Server の OLE DB プロバイダなどの多くのプロバイダでは、結果セット アクセサを閉じるまで、出力パラメータ値にアクセスできません。Close を呼び出して、パラメータ アクセサではなく、返された行セットと結果セット アクセサを閉じると、出力パラメータ値を取得できます。

使用例

同じコマンドを繰り返し実行するときに Close と ReleaseCommandを呼び出す方法を以下に示します。

void DoCCommandTest()
{
   HRESULT hr;

   hr = CoInitialize(NULL);

   CCustomer rs;           // Your CCommand-derived class
   rs.m_BillingID = 6611;  // Open billing ID 6611
   hr = rs.OpenAll();      // (Open also executes the command)
   hr = rs.MoveFirst();    // Move to the first row and print it

   _tprintf_s(_T("First name: %s, Last Name: %s, Customer ID: %d, Postal Code: %s\n"),
      rs.m_ContactFirstName, rs.m_L_Name, rs.m_CustomerID, rs.m_PostalCode);

   // Close the first command execution
   rs.Close();

   rs.m_BillingID = 3333;     // Open billing ID 3333 (a new customer)
   hr = rs.Open();            // (Open also executes the command)
   hr = rs.MoveFirst();       // Move to the first row and print it

   _tprintf_s(_T("First name: %s, Last Name: %s, Customer ID: %d, Postal Code: %s\n"),
      rs.m_ContactFirstName, rs.m_L_Name, rs.m_CustomerID, rs.m_PostalCode);

   // Close the second command execution;
   // Instead of the two following lines
   // you could simply call rs.CloseAll()
   // (a wizard-generated method):
   rs.Close();
   rs.ReleaseCommand();

   CoUninitialize();
}

必要条件

ヘッダー : atldbcli.h

参照

参照

CCommand クラス

CCommand::ReleaseCommand

その他の技術情報

CCommand のメンバ