Freigeben über


CCommand::Close

Gibt das Accessorrowset frei, das dem Befehl zugeordnet ist.

void Close( );

Hinweise

Ein Befehl verwendet ein Rowset, Resultsetaccessor und (optional) einen Parameteraccessor (außer Tabellen, die keine Parameter unterstützen und keinen Parameteraccessor erfordern).

Wenn Sie einen Befehl ausführen, müssen Sie Close und ReleaseCommand nach dem Befehl aufrufen.

Wenn Sie den gleichen Befehl wiederholt ausführen möchten, sollten Sie jeden Resultsetaccessor freigeben, indem Sie Close aufrufen, bevor Sie Execute aufrufen. Am Ende der Zeile, sollten Sie den Parameteraccessor schützen, indem Sie ReleaseCommand aufrufen. Ein anderes allgemeines Szenario ruft eine gespeicherte Prozedur auf, die einzigen Ausgabeparameter. Auf vielen Anbietern (wie dem OLE DB-Anbieter für SQL Server) sind der Ausgabeparameterwerte nicht zugreifen, bis Sie den Resultsetaccessor schließen. Rufen Sie Close auf, um den zurückgegebenen Rowset- und Resultsetaccessor zu schließen, jedoch nicht den Parameteraccessor und Sie so können, um der Ausgabeparameterwerte.

Beispiel

Das folgende Beispiel zeigt, wie Sie Close und ReleaseCommand aufrufen können, wenn Sie den gleichen Befehl wiederholt ausführen.

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();
}

Anforderungen

Header: atldbcli.h

Siehe auch

Referenz

CCommand-Klasse

CCommand::ReleaseCommand