CCommand::Close
Libera o conjunto de linhas do acessador associado ao comando.
void Close( );
Comentários
Um comando usa um conjunto de linhas, o acessador do conjunto de resultados, e (opcionalmente) um acessador de parâmetro (em vez de tabelas, que não oferecem suporte a parâmetros e não precisam de um acessador o parâmetro).
Quando você executar um comando, você deve chamar Close e ReleaseCommand após o comando.
Quando você deseja executar repetidamente o mesmo comando, você deve liberar cada acessador do conjunto de resultados chamando Close antes de chamar Execute. Ao término da série, deverá liberar o acessador de parâmetro chamando ReleaseCommand. Outro cenário comum é chamar um procedimento armazenado com parâmetros de saída. Em muitos provedores (como o provedor OLE DB para SQL Server) os valores de parâmetro de saída não estarão acessíveis até que você feche o acessador do conjunto de resultados. Chame Close para fechar o acessador retornado do conjunto de linhas e do conjunto de resultados, mas não o acessador de parâmetro, permitindo que você recupere os valores de parâmetro de saída.
Exemplo
O exemplo a seguir mostra como você pode chamar Close e ReleaseCommand quando você executa o mesmo 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
Header: atldbcli.h