Partager via


CCommand::Close

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

void Close( );

Notes

Une commande utilise un ensemble de lignes, l'accesseur de jeu de résultats, et (facultatif) 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 effectuer la même commande à plusieurs reprises, vous devez libérer chaque accesseur de jeu de résultats en appelant Close avant d'appeler Execute.À l'issue de la série, vous devez libérer l'accesseur de paramètre en appelant ReleaseCommand.Un autre scénario courant appelle une procédure stockée qui dispose des paramètres de sortie.De nombreux éditeurs (tels que le fournisseur OLE DB pour SQL Server) les valeurs de paramètre de sortie ne seront pas accessibles jusqu'à ce que vous fermiez l'accesseur de jeu de résultats.Appelez Close pour fermer l'accesseur retourné d'ensemble de lignes et de jeu de résultats, mais pas l'accesseur de paramètre, ainsi en vous permettant de récupérer les valeurs de paramètre de sortie.

Exemple

L'exemple suivant montre comment appeler Close et ReleaseCommand lorsque vous exécutez la même commande à plusieurs reprises.

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

Header: atldbcli.h

Voir aussi

Référence

CCommand, classe

CCommand::ReleaseCommand