次の方法で共有


CCommand::Close

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

void Close( );

解説

コマンドは、行セット、結果セットのアクセサーと (省略可能)パラメーター アクセサーを使用します (パラメーターをサポートしないため、パラメーター アクセサーを必要としない)テーブルとは異なり。

コマンドを実行すると、コマンドの後に Close と ReleaseCommand の両方をダイヤルする必要があります。

同じコマンドを繰り返し実行するとき Close を呼び出すことによって Executeを呼び出す前に各結果セットのアクセサーを解放する必要があります。文字列の終わりに、 ReleaseCommandを呼び出して、パラメーター アクセサーを解放する必要があります。別の一般的なシナリオは、出力パラメーターを持つストーアド プロシージャを呼び出しています。多くのプロバイダーで結果セットのアクセサーを閉じるまで (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