使用ADO調用功能相關說明
獲取ourput參數是大家最關注的問題,同時也是最“難”的問題,因為按照書本上的寫法,經常獲得不了Output參數,其實這個問題很容易解決:在調用_CommandPtr的Execute方法時,寫成cmmd->Execute(NULL, NULL, adCmdStoredProc);
而不要寫成
RecordsetPtr rec = cmmd->Execute(NULL, NULL, adCmdStoredProc);
也就是說,不取返回值(我不知道這是為什么,但是相信我,事情就是這樣)。這句執(zhí)行完后,使用 就可以獲得輸出參數的值了。以下是一個通過ADO調用存儲過程的部分代碼:
- strTmp.Format( "%s", CrackStrVariant( Final) ); // to see the value
- put your code to see all column values
- }
- catch( CException *e ) // trapping all error messages
- {
- TCHAR szCause[255];
- e->GetErrorMessage(szCause, 255);
- m_status=szCause;
- }
- catch( _com_error &e )
- {
- m_status=e.ErrorMessage( );
- }
- catch(...)
- {
- m_status="Error while executing the Import";
- }
昨天做項目時發(fā)現此處不正確,m_pRecordset不能close。而且釋放指針時要先釋放m_pCommand,再釋放m_pRecordset ,ADO調用很多數據庫支持在一個命令執(zhí)行中組合、批處理多個命令執(zhí)行。例如,SQL Server允許你使用分號分隔命令。
把多個命令組合成為一個減少了對服務器的訪問次數,可以提高應用程序的性能。例如,你能在本地應用程序中存儲所有的刪除,并在數據源發(fā)布一個批處理命令調用來刪除它們。 #t#
ADO調用提高了性能,但是也增加了應用程序管理數據集里面數據更新的復雜性。ADO調用為了保持簡單性,你也許會為數據集中的每個數據表建立一個數據適配器。