使用ADO調(diào)用功能相關(guān)說明
獲取ourput參數(shù)是大家最關(guān)注的問題,同時也是最“難”的問題,因為按照書本上的寫法,經(jīng)常獲得不了Output參數(shù),其實這個問題很容易解決:在調(diào)用_CommandPtr的Execute方法時,寫成cmmd->Execute(NULL, NULL, adCmdStoredProc);
而不要寫成
RecordsetPtr rec = cmmd->Execute(NULL, NULL, adCmdStoredProc);
也就是說,不取返回值(我不知道這是為什么,但是相信我,事情就是這樣)。這句執(zhí)行完后,使用 就可以獲得輸出參數(shù)的值了。以下是一個通過ADO調(diào)用存儲過程的部分代碼:
- 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ā)現(xiàn)此處不正確,m_pRecordset不能close。而且釋放指針時要先釋放m_pCommand,再釋放m_pRecordset ,ADO調(diào)用很多數(shù)據(jù)庫支持在一個命令執(zhí)行中組合、批處理多個命令執(zhí)行。例如,SQL Server允許你使用分號分隔命令。
把多個命令組合成為一個減少了對服務器的訪問次數(shù),可以提高應用程序的性能。例如,你能在本地應用程序中存儲所有的刪除,并在數(shù)據(jù)源發(fā)布一個批處理命令調(diào)用來刪除它們。 #t#
ADO調(diào)用提高了性能,但是也增加了應用程序管理數(shù)據(jù)集里面數(shù)據(jù)更新的復雜性。ADO調(diào)用為了保持簡單性,你也許會為數(shù)據(jù)集中的每個數(shù)據(jù)表建立一個數(shù)據(jù)適配器。