何將你的數據訪問代碼投向ADO的懷抱。這種轉變不會很痛苦,因為ADO的語法同現有的語法差不多。也許微軟或第三方會在將來開發出轉換向導來簡化這一轉換過程。從現在起,你就應開發純ADO代碼的程序。你也可以繼續使用DAO或RDO代碼來開發你的程序,但落伍的感覺總是不好的。
ADO編程應用
ADO(ActiveXDataObjects)是基於組件的數據庫編程接口,它是一個和編程語言無關的COM組件係統。本文主要介紹用ADO編程所需要注意的技巧和在VC下進行ADO編程的模式,並對C++Extensions進行了簡單的討論,希望對ADO開發人員有一定的幫助作用。因為ADO是一個和編程語言無關的COM組件係統,所以這裡討論的要點適用於所有的編程語言和編程環境,比如:VB、VBScript、VC、Java等等。
1.顯式定義對象類型
實際上,這條準則不僅適用於ADO編程,也適用於其他的與COM對象相關的編程。因為如果一開始就定義變量類型,則編譯器在編譯的時候就可以知道變量的類型,此時編譯器實際上是采用vtable偏移的方式來得到具體的COM對象包含的方法的地址(這一點和C++中虛函數的地址獲取方式類似);但如果一開始不指定變量類型的話,比如簡單地采用如下的語句:
DIMmyConasObject
或者是:
DIMmyCon
這樣,編譯器在編譯的時候就不能得到變量的類型,而隻能在運行的時候動態地得到方法的信息(通過使用接口IDispatch的Invoke方法來實現),如此為了得到方法的地址和相關的變量情況就需要在內部進行兩次調用,無疑會降低程序的運行速度。
2.綁定列到具體的字段對象
在程序開始時就建立對字段對象的引用,可以避免在每次得到記錄後,再在Recordset::Fields中進行查找而增加係統的開銷。
例如,可以采用如下所示的代碼:
PrivateSubTblBrowse_Click()
Dimfld1AsADODB.Field
Dimfld2AsADODB.Field
本章節來源於𝑜𝑜𝑝.𝑡𝑤
DimrsAsADODB.Recordset
setrs=g_cn.execute(...)
'g_cn為全局對象adodb.connection
Setfld1=rs.Fields(“id”)'數據表的字段
Setfld2=rs.Fields(“name”)’數據表的字段
Ifrs.BOF=FalseThen
Whilers.BOF=False
Debug.Printfld1.Value
Debug.Printfld2.Value
rs.MoveNext
Wend
EndIf
rs.Close
EndSub
3.用SQL語句和存儲過程進行數據更新
儘管采用Recordset對象來更新數據是非常方便的,但是它的開銷也大,通過數據源對象返回的查詢集不僅包含了數據,而且也包含了元數據(metadata),在有些時候元數據可能比數據本身還要大,所以最好采用SQL語句來更新數據。還有要使用存儲過程而不是單一的SQL語句來獲取信息。因為存儲過程是在服務器端執行的,隻把結果返回到客戶端,這樣一方麵可以降低網絡進行數據交互的開銷,另一方麵使係統更加容易維護,並且能保持數據的一致性。
句語TCELES的條單作操合集用使.4
:碼代下如用采以可,如例。用引的段字個一於關得獲要需不而值的段字個一到得地速快以可,式方捷快的象對tesdroceR是法方tcelloC_tup::tesdroceR和法方tcelloC_teg::tesdroceR。作操行進句語TCELES的條單對法方的合集用使好最,時標遊用使在
)(tcelloCbuS
tesdroceRweNsAsrmiD
”...“=noitcennoCevitcA.sr
”句語詢查LQS條一“=ecruoS.sr
nepO.sr
)2(tcelloC.sr,)1(tcelloC.sr,)0(tcelloC.srtnirP.gubeD
emanl_ua!sr,emanf_ua!sr,di_ua!srtnirP.gubeD
buSdnE
據數的要需所詢查隻.5
。)定限行進句子EREHW過通(圍範的集錄記回返定限要需時同,來出寫接直段字個幾這把好最,值的段字個幾某中其要需隻果如,率效的統係高提了為是但,詢查行進式模的”LBTMORF*TCELES“用采慣習都員人發開多很管儘
式方鎖和型類、置位的標遊擇選確正.6
。的貴昂常非是價代的息信個這取獲而,)據數元(息信的外額到得要需擎引標遊端戶客,據數新更要需果如為因,型類鎖的)ylnOdaeRkcoLda(鎖加讀用采隻好最,標遊端戶客用采果如:意注要需時同。些一好會能性的標遊端器務服用采,大當相合集據數果如然當。型類標遊端器務服用采是認默統係ODA為因,好要能性的到得所標遊端器務服用采比會)revreSesUda(標遊端戶客用采,錄記動滾要需果如。能性的好最得獲以可樣這,)ylnOdaeRkcoLda(鎖加讀和)ylnOdrawroFnepOda(標遊前向僅、)revreSesUda(標遊端器務服用使好最,錄記新更和動滾要需不且並錄記取讀序順按要需隻果如
性屬eziSehcaC的象對集錄記整調.7
記些一下取提,存緩前當放釋就ODA,候時的圍範存緩出超據數的覽瀏要當。據數取提中存緩從隻就ODA,時據數覽瀏內圍範的存緩在當,目數的錄記的存緩和取提定決來性屬eziSehcaC的象對集錄記用使ODA