Freigeben über


CCommand::Close

Gibt das Accessor rowset dem Befehl zugeordnet ist.

void Close( );

Hinweise

Ein Befehl verwendet ein Rowset Accessor für Resultsets und (optional) einen Parameter (außer Accessor für Tabellen, die keine Parameter unterstützen und keinen Accessor für Parameter erforderlich).

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

Wenn Sie wiederholt denselben Befehl ausführen möchten, müssen Sie jeden Accessor für ResultSet freigeben, indem Sie Close aufrufen, bevor Sie Execute aufrufen.Am Ende der Reihe, sollten Sie den Accessor für die Parameter, indem Sie ReleaseCommand aufrufen.Ein weiteres häufiges Szenario wird eine gespeicherte Prozedur gezeigt, die Ausgabeparameter verfügt.Bei vielen Anbieter (z. B. dem OLE DB-Anbieter für SQL Server) sind die Werte für Ausgabeparameter nicht verfügbar, bis Sie den Accessor für ResultSet schließen.Rufen Sie Close auf, um die zurückgegebenen Accessor für Rowset- und Resultset zu schließen, aber nicht auf den Accessor für die Parameter und ermöglichen so die Ausgabeparameter von Werten abzurufen.

Beispiel

Das folgende Beispiel zeigt, wie Sie Close und ReleaseCommand aufrufen können, wenn Sie denselben Befehl mehrfach 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