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