Partager via


CCommand : : Fermez

Libère l'ensemble de lignes accesseur associé à la commande.

void Close( );

Notes

Une commande utilise un ensemble de lignes, un accesseur de l'ensemble de résultats, et (éventuellement) un accesseur de paramètre (contrairement aux tables, qui ne prennent pas en charge les paramètres et n'ont pas besoin d'un accesseur de paramètre).

Lorsque vous exécutez une commande, vous devez appeler Close et ReleaseCommand après la commande.

Lorsque vous souhaitez exécuter le même ordre à plusieurs reprises, vous devez libérer chaque accesseur de l'ensemble de résultats en appelant Close avant d'appeler Execute. À la fin de la série, vous devez libérer un accesseur de paramètre en appelant ReleaseCommand. Un autre scénario courant appelle une procédure stockée qui possède des paramètres de sortie. Dans de nombreux fournisseurs (tels que le fournisseur OLE DB pour SQL Server), les valeurs de paramètres de sortie ne sont pas accessibles jusqu'à ce que vous fermiez l'accesseur de l'ensemble de résultats. Appelez Close pour fermer les accesseurs retourné d'ensemble de lignes et de jeu de résultats, mais pas l'accesseur de paramètre, ce qui vous permet de récupérer les valeurs des paramètres de sortie.

Exemple

L'exemple suivant montre comment appeler Close et ReleaseCommand lorsque vous exécutez la même commande de façon répétée.

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

Configuration requise

En-tête : atldbcli.h

Voir aussi

Référence

classe de CCommand

CCommand : : ReleaseCommand