錄(提取的數目為CacheSize所指定的大小),所以必須根據具體的應用程序的情況,來設定CacheSize的大小,保證得到最佳的性能。
8.定義Command對象的參數
在許多數據源中,得到參數信息和執行命令的代價幾乎是一樣的,所以最好自己在程序中定義好Command參數(也就是說要定義好參數的名稱、類型和方向信息),避免一些從數據提供者(Provider)那裡獲取信息的操作。
9.使用原始的OLEDB提供者
MDAC對許多數據源提供了原始的數據提供者,比如SQLServer、Oracle和Access數據庫,這樣就不需要再通過ODBC來獲取數據(也就是說不需要再通過ODBC驅動這一層),這樣的好處是能更快地得到數據,並且能降低磁盤和內存的開銷。
10.斷開Connection連接
如果使用客戶端遊標,就要斷開Connection連接。ADO有一個特征是當使用客戶端遊標操作Recordset記錄集的時候,不需要和服務器保持聯係。所以可以充分利用這個特性降低服務器端的開銷(服務器就不需要維護這些連接了)。當操作完記錄集需要更新時,可以重新和數據庫進行連接來更新數據。為了創建一個可以斷開連接的記錄集,同時需要使用靜態遊標(adOpenStatic)和批處理的加鎖模式(adLockBatchOptimistic)。下麵是有關處理的VC代碼:
pRs.CreateInstance(__uuid(Recordset));
pRs->CursorLoction=adUseClient;
pRs->Open(strCmdText,strConnection,adOpenStatic,adLockBatchOptimistic,adCmdText);
pRs->PutRefActiveConnection(NULL);
\/\/對記錄集對象pRs進行操作
\/\/重新和數據庫建立連接
pRs->PutRefActiveConnectio(pCon);
請訪問ᴏᴏᴘ.ᴛᴡ獲取最快的章節更新
\/\/批量更新數據
pRs->UpdateBatch(adAffectAll);
需要注意的是:當執行批量更新時,必須自己處理數據衝突問題,因為更新數據時,其他用戶也可能同時正在對該數據進行操作。
11.使用adExecuteNoRecords選項
如果不需要返回記錄,要使用adExecuteNoRecords選項。ADO2.0包括一個新的執行選項稱為adExecuteNoRecords。當使用該選項的時候,ADO就不會創建記錄集對象,不設置任何遊標屬性。數據提供者因為不需要認證集合的屬性而使性能得到優化。具體的例子如下:
con.Execute“insertintotblvalues(fv1,fv2)”,,adExecuteNoRecords
對僅有一條的執行語句采用Connection::Execute方法比使用Recordset::Open方法或者是Command::Execute方法的效果要好,因為ADO不保留任何命令狀態的信息,因此執行性能就有所改進。
12.使用session\/connection緩衝池
因為數據庫的打開和關閉非常消耗係統資源,因此,使用連接池對基於多層的應用的性能會有很大的提高。當使用MDAC的時候,開發人員本身並不需要考慮對數據庫連接的緩存,MDAC會自動處理它。連接池在兩個層次上提供支持:OLEDBsessions和ODBC連接。如果使用ADO,數據庫連接會自動被OLEDBsession緩衝池所緩存;如果使用ODBC,可以利用在ODBC數據源管理中新的連接緩衝池選項對ODBC緩衝進行設置。
實現方法
我們知道,在VB下進行基於ADO的編程相對比較簡單,隻要通過reference加載了適當的類型庫後,就可以正常地調用ADO對象。但是對於VC下的基於ADO的數據庫開發就稍微複雜一些。VC中實現對ADO操作通常有三種方法:
?#import方法;
?利用MFCOLE的ClassWizard;
?通過WindowsAPI中COM相關的函數。
。法方種三這紹介別分麵下。便方很得變發開序程使,構結類的BV似類個一生產許允它,法方的便方最是tropmi#,中法方種三這在
法方tropmi#.1
:件文個兩成生動自候時的譯編在會CV,庫型類的用引何任對。裝封的象對ODA對成生動自及以,義定的sDIUG對個一生產動自夠能CV,稱名和徑路的庫型類的含包要所供提要需,中法方tropmi#在
;義定的象對中庫型類對和型類的舉列所了含包:)hlt.(件文頭?
。裝封生產法方的中型模象對庫型類對:)ilt.(件文現實?
的dd.51odasm對加增中件文h.xfadts在,如例
。件文個兩ilt.51odasm和hlt.51odasm生產會CV,後之tropmi#
。數函esaeleR和feRddA、ecafretnIreyuQ行執動自夠能針指能智。針指能智為稱被也它,t_rtp_moc_類的新個一用使夠能tropmi#
:作操的ODA對現實中用應在tropmi#用使何如了示演碼代的麵下
\”lld.51odasm\\oda\\metsys\\selifnommoc\\selifmargorp\\:c“tropmi#
ecapseman_o
)”FOEoda“,”FOE“(emaner
。1-數常為作FOE了義定經已都用應CV的型典為因,的要必是FOE名命重
定要需象對化動自個一作操,說來常通