Compartir a través de


CCommand::Close

Libera el conjunto de filas de descriptor de acceso asociado al comando.

void Close( );

Comentarios

Un comando utiliza un conjunto de filas, el descriptor de acceso del conjunto de resultados, y (opcionalmente) un descriptor de parámetro (a diferencia de las tablas, que no admiten parámetros y no necesitan un descriptor de parámetro).

Al ejecutar un comando, debe llamar a Close y ReleaseCommand después del comando.

Si desea ejecutar el mismo comando repetidamente, debe liberar a cada descriptor de acceso del conjunto de resultados llamando a Close antes de llamar a Execute. Al final de la serie, debe liberar el descriptor de parámetro llamando a ReleaseCommand. Otro escenario común consiste en llamar a un procedimiento almacenado con parámetros de salida. En muchos proveedores (como el proveedor OLE DB para SQL Server) los valores de parámetros de salida no estarán disponibles hasta que se cierre el descriptor de acceso del conjunto de resultados. Llame a Close para cerrar el descriptor devuelto de conjunto de filas y del conjunto de resultados, pero no el descriptor de parámetro, lo que permite recuperar los valores de parámetro de salida.

Ejemplo

El ejemplo siguiente se muestra cómo se puede llamar a Close y ReleaseCommand cuando se ejecuta el mismo comando repetidamente.

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

Requisitos

Encabezado: atldbcli.h

Vea también

Referencia

CCommand (Clase)

CCommand::ReleaseCommand