Command 및 CommandText 속성 예제(VC++)
다음 코드에서는 Command 속성을 사용하여 프로시저의 텍스트를 업데이트하는 방법을 보여 줍니다.
// BeginCommandTextCpp
// This sample runs correctly only if procedure 'CustomerById' exists.
#import "msado15.dll" rename("EOF", "EndOfFile")
#import "msadox.dll" no_namespace
#include "iostream"
using namespace std;
// Function declarations
inline void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);};
void ProcedureTextX();
int main() {
if ( FAILED(::CoInitialize(NULL) ) )
return -1;
HRESULT hr = S_OK;
// Define ADOX object pointers, initialize pointers. These are in ADOX namespace.
_CatalogPtr m_pCatalog = NULL;
// Define ADODB object pointers.
ADODB::_ConnectionPtr m_pCnn = NULL;
ADODB::_CommandPtr m_pCommand = NULL;
try {
// Open the Connection
TESTHR(hr = m_pCnn.CreateInstance(__uuidof(ADODB::Connection)));
TESTHR(hr = m_pCatalog.CreateInstance(__uuidof(Catalog)));
TESTHR(hr = m_pCommand.CreateInstance(__uuidof(ADODB::Command)));
m_pCnn->Open("Provider='Microsoft.JET.OLEDB.4.0';data source='c:\\Northwind.mdb';", "", "", NULL);
// Open the catalog
m_pCatalog->PutActiveConnection(_variant_t((IDispatch *)m_pCnn));
// Get the Command
m_pCommand = m_pCatalog->Procedures->GetItem("CustomerById")->GetCommand();
// Update the CommandText
m_pCommand->PutCommandText("PARAMETERS [CustId] Text;select "
"CustomerId, CompanyName, ContactName "
"from Customers where CustomerId = [CustId]");
printf("CommandText is updated.\n");
// Update the Procedure
m_pCatalog->Procedures->GetItem("CustomerById")->PutCommand(_variant_t((IDispatch *)m_pCommand));
printf("Procedure 'CustomerById' is updated.\n");
}
catch(_com_error &e) {
// Notify the user of errors if any.
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
printf("\n\tSource : %s \n\tdescription : %s \n ", (LPCSTR)bstrSource, (LPCSTR)bstrDescription);
}
catch(...) {
cout << "Error occurred in ProcedureTextX...."<< endl;
}
::CoUninitialize();
}