共用方式為


CCommand::Close

釋放與命令關聯的存取子資料列集。

void Close( );

備註

命令使用一個資料列集、 結果 set 存取子,以及 (選擇性) 參數存取子 (不同於資料表,它不支援參數並不需要是參數存取子)。

當您執行命令時,您應該呼叫兩者Close和 ReleaseCommand 命令之後。

當您想要重複執行相同的命令時,您應該釋放每個結果集的存取子藉由呼叫Close呼叫之前Execute。在一系列的最後,您便應該釋放參數存取子藉由呼叫ReleaseCommand。輸出參數的預存程序呼叫另一個常見的案例。在多個提供者 (例如 SQL Server 的 OLE DB 提供者) 的輸出參數值將無法存取您必須先關閉結果 set 存取子。呼叫Close若要關閉傳回的資料列集和結果 set 存取子,但沒有參數存取子,因此可允許您擷取輸出參數值。

範例

下列範例會示範如何呼叫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