WEB开发网      濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堝姛缂佺娀绠栭弻宥堫檨闁告挻姘ㄩ幑銏犫槈濞嗘劕顎撻梺鍛婂姇瀵爼骞栭幇顔炬/闁告挆鍕畬闂佸疇顫夐崹鍧楀箖閳哄啠鍋撻崷顓炐㈡い銉︾箞濮婂搫效閸パ€鍋撳Δ鍛;闁规崘顕ф闂佸憡娲﹂崹鎵不濞戙垺鐓曟い鎰剁稻缁€鍐┿亜鎼达紕效婵﹨娅g划娆忊枎閹冨闂備礁鎽滄慨鐢稿礉濞嗘劒绻嗛柣銏⑶圭粈瀣亜閺嶃劏澹橀柛鐐姂濮婃椽妫冨ù銈嗙⊕閹峰懘骞撻幒宥咁棜闂備礁婀遍崕銈夈€冮崱娑樼厱闁圭儤顨嗛悡鏇㈡煛閸ャ儱濡煎ù婊勭矋閵囧嫯绠涢敐鍛睄闂佸搫澶囬埀顒€纾弳鍡涙倵閿濆骸澧伴柡鍡欏█閺屟勫濞嗘垵鍩岄梺闈涙鐢帡锝炲┑瀣亗閹艰揪绲奸悽鑽ょ磽娴h娈曢柛銊ョ仢椤繒绱掑Ο璇差€撶紓浣圭☉椤戝懎鈻撻鐐╂斀妞ゆ梹鏋婚崗顒傜磼閻樿櫕宕岄柕鍡曠椤繈骞囨担鍏夋瀸濠电姷鏁告慨顓㈠磻閹捐秮褰掓晲閸モ斂鈧﹪鏌¢埀顒佺鐎n偆鍘藉┑鈽嗗灡椤戞瑩宕电€n兘鍋撶憴鍕仩闁稿氦绮鹃悘鍐⒑缂佹◤顏勵嚕閸洖鐤柣鎰暩绾惧ジ鏌涚仦鐐殤閺佸牓鎮楃憴鍕缂侇喖绻樿棟閻庨潧鎽滃Λ顖炴煙椤栧棔绀佹禒顕€鎮楀▓鍨灈闁绘牜鍘ч悾鐑芥偂鎼存ɑ顫嶅┑鈽嗗灟鐠€锕傛倵瀹曞洨纾介柛灞剧懅閸斿秵銇勯妸銉︻棞闁伙絾绻堥獮鏍ㄦ媴濮濆本鎲伴梻浣虹帛濡啴藟閹捐姹查悗锝庡枟閻撶喐淇婇妶鍌氫壕闂佺粯顨呭Λ妤呭煝閹炬緞鏃堝川椤旇瀚奸梺鑽ゅТ濞茬娀鍩€椤掑啯鐝柣蹇婂亾闂傚倷绀侀幖顐﹀箠閹邦厽鍙忛柟缁㈠枟閸嬧晠鏌i妶搴$仜濞存粌缍婇弻鐔兼倻濡偐鐣洪梺鍝勬噺缁诲牆顫忓ú顏咁棃婵炴垶鑹鹃。鍝勨攽閳藉棗浜濋柣鐔叉櫊閵嗕礁鈻庨幒鏃傛澑闂佸搫鍟崐濠氭儊閸儲鈷戞慨鐟版搐閻忓弶绻涙担鍐插椤╃兘鏌ㄩ弴鐐测偓褰掓偂閺囥垺鐓忓┑鐐茬仢閸斻倝鏌涢埡瀣ɑ妞ゃ劊鍎甸幃娆撳级閹存繍娼氭俊銈囧Х閸嬬偤鏁冮姀銈冣偓浣糕枎閹炬潙娈愰梺鍐叉惈椤戝洭鐛姀銈嗏拻闁稿本鐟︾粊鐗堛亜椤愩埄妲搁柣锝呭槻铻i柤娴嬫櫇閻撳顪冮妶鍡橆梿闁跨喆鍎茬粋宥堛亹閹烘挾鍘甸梺缁樺灦钃遍悘蹇e幖闇夋繝濠傚暟缁夌儤鎱ㄦ繝鍛仩缂佽鲸甯掕灒闁惧繘鈧稒顢橀梻鍌欑劍鐎笛兠哄澶婄柧婵炴垶绮庢禍閬嶆⒒娴e憡鍟炴繛璇х畵瀹曞綊鏌嗗鍛幈闂佺鎻梽鍕偂濞嗘挻鐓犳繛鏉戭儐濞呭懎霉閻樺磭鐭婇柍瑙勫灴閸ㄩ箖鎮欓挊澶夊垝闂備浇顕栭崰妤呫€冮崨鏉戠叀濠㈣埖鍔曠粻鎶芥煙閹屽殶鐟滄澘娲ㄧ槐鎾诲磼濞嗘垼绐楅梺鍝ュУ閻楃娀銆侀弽顓炲窛闁圭⒈鍘介弲锝夋⒑缁嬭法绠抽柛妯犲懏顐介柣鎰節缁诲棙銇勯弽銊х煂閻㈩垱绋掔换娑㈠川椤撶喎鏋犲┑顔硷功缁垶骞忛崨瀛樺仭闂侇叏绠戝▓婵堢磽閸屾瑦绁版い鏇嗗洤纾归柛顭戝櫘閸ゆ洜绱撴担璐細缂佲檧鍋撻梻浣规偠閸庮垶宕濆鍛瀺闁搞儺鍓氶埛鎴犵磼鐎n偄顕滄繝鈧幍顔剧<閻庯綆鍋呭畷宀€鈧娲忛崹浠嬪箖娴犲宸濆┑鐘插楠炴姊洪悷鏉挎倯闁伙綆浜畷瑙勭節濮橆剛鍘愰梺鍝勬储閸ㄦ椽鎮¢妷锔藉弿婵☆垰鐏濋悡鎰版煟閹捐泛鏋涢柣鎿冨亰瀹曞爼濡烽妷銉バ戠紓鍌欑椤戝牆鐣烽悽鍨潟闁圭儤姊荤壕鍏间繆椤栨繂浜归柣锝堟缁辨挻鎷呴搹鐟扮缂備浇顕ч悧鍡涙偩瀹勯偊娼ㄩ柍褜鍓氭穱濠傤潰瀹€濠冃ㄧ紓鍌欐祰妞村摜鎹㈤崼婵愭綎缂備焦蓱婵绱掑☉姗嗗剰婵炲牊鍔欏娲箹閻愭彃顬嗛梺鍛婎殔閸熷潡鎮鹃悜绛嬫晬闁绘劘灏欐鍥⒑閻熼偊鍤熷┑顕€娼ч埢鎾淬偅閸愨斁鎷虹紓鍌欑劍钃遍柍閿嬪浮閺屽秴鐣¢幍顔尖叺閻庢鍣崑濠傜暦閹烘鍊烽悗鐢登归獮鍫ユ⒒娴g懓鈻曢柡渚囧櫍瀹曟垿骞樼紒妯煎幐闂佸憡渚楅崰姘跺箠閸涱喕绻嗛柛娆忣槸婵洭鎽堕敐澶嬪仩婵炴垶甯掓晶鏌ユ煛閸屾浜鹃梻鍌氬€烽懗鍓佸垝椤栫偛绀夐柡鍥╁€i悢鍝ョ瘈闁搞儜鍐╁劒闂備胶绮弻銊╂儍濠靛缁╅柤鎭掑劘娴滄粓鏌¢崘銊﹀妞ゃ儱顦甸弻娑㈠棘鐠囨祴鍋撳┑瀣闁割偅娲橀崐鐑芥煟閹寸偍缂氶柛姗€浜跺娲传閸曨剙鍋嶉梺鍛婃煥閺堫剟寮查崼鏇ㄦ晬闁绘劕顕崢鍗炩攽閻愬弶顥滅紒缁樺笧缁粯绻濆顓犲幐闁诲繒鍋熼弲顐f櫏闁诲氦顫夊ú锕傚磻婵犲倻鏆﹂柣鏃傗拡閺佸棝鏌嶈閸撴瑩鍩㈠澶嬫櫜闁搞儮鏅濋敍婵囩箾鏉堝墽绋荤憸鏉垮暞缁傚秹鎮欓鍌滅槇闂侀潧楠忕徊鍓ф兜閻愵兙浜滈柟瀛樼箖瀹告繄绱掗鍓у笡闁靛牞缍佸畷姗€鍩¢崘銊ョ闂備浇顕х€涒晝绮欓幒鎴犲箵閻犳亽鍔庢稉宥嗘叏濡炶浜鹃梺鍝勮閸斿矂鍩ユ径濞㈢喐寰勯惂鍝ョɑ闁靛洤瀚版俊鎼佹晲閸涱厼袝闂備浇顕栭崰妤呮偡閳哄懌鈧線寮崼婵堫槹濡炪倖鎸荤换鍕矆閸曨垱鈷掗柛灞剧懄缁佺増銇勯弴鐔哄⒌鐎规洑鍗冲浠嬵敃閵堝浂妲稿┑鐘垫暩婵挳宕愭繝姘辈闁挎洖鍊归悡娆愩亜閺嶎偄浠滃ù婊呭娣囧﹪鎳犳0婵嗘闂佸疇顫夐崹鍧楀春閸曨垰绀冮柕濞у懌鍋″┑锛勫亼閸娿倝宕㈡ィ鍐ㄧ婵☆垯璀﹂崵鏇㈡偣閸ャ劎銈存俊鎻掔墦閺屾洝绠涢弴鐑嗘綌闂佸啿鎼幊蹇涙偂韫囨搩鐔嗛悹楦挎婢ф洟鏌涢弮鈧幐鎶藉蓟濞戙垹妫樻繛鍡欏亾妤旂紓鍌欐祰妞存悂骞愭繝姘闁告侗鍨抽惌娆撳箹鐎涙ɑ灏ù婊堢畺閺屾稑鈹戦崟顐㈠Б闂佹椿鍘介幐楣冨箟閹间焦鍋嬮柛顐g箘閻熴劑姊洪崫鍕靛剮缂佽埖宀稿濠氭偄閻撳海顦悷婊冪箳閺侇喖鈽夐姀锛勫幐闂佸憡渚楅崰妤呭磹閹扮増鐓涢悘鐐额嚙婵倿鏌熼鍝勨偓婵嗙暦閹烘垟妲堟慨妤€妫旂槐锟� ---闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌i幋锝呅撻柛濠傛健閺屻劑寮崼鐔告闂佺ǹ顑嗛幐鍓у垝椤撶偐妲堟俊顖氭惈缁犺鈹戦悙鍙夆枙濞存粍绮撻幃鈥斥槈閵忥紕鍘卞┑鐐村灥瀹曨剟鐛Ο姹囦簻闁哄倹瀵чˉ銏℃叏婵犲懏顏犻柟鐟板婵℃悂濡烽敂鎯х稈闂傚倷鑳堕幊鎾诲吹閺嶎厼绠柨鐕傛嫹
开发学院WEB开发ASP ADO+ 引导数据种类的演变(转自 ms 二) 阅读

ADO+ 引导数据种类的演变(转自 ms 二)

 2001-01-02 11:17:16 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亜顒㈡い鎰Г閹便劌顫滈崱妤€骞婄紓鍌氬€瑰銊╁箟缁嬫鍚嬮柛顐線缂冩洟姊婚崒娆戭槮婵犫偓闁秵鎯為幖娣妼缁愭鏌″搴′簽濞戞挸绉甸妵鍕冀椤愵澀娌梺缁樻尪閸庣敻寮婚敐澶婂嵆闁绘劖绁撮崑鎾诲捶椤撴稑浜炬慨妯煎亾鐎氾拷闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亝鎹i柣顓炴閵嗘帒顫濋敐鍛婵°倗濮烽崑娑⑺囬悽绋挎瀬闁瑰墽绮崑鎰版煙缂佹ê绗ч柍褜鍓﹂崣鍐潖閸濆嫅褔宕惰娴犲ジ姊虹拠鑼闁煎綊绠栭幃楣冩倻閽樺鎽曢梺闈涱檧婵″洭宕㈤悽鍛娾拺閻熸瑥瀚烽崯蹇涙煕閻樺磭澧甸柕鍡楀€圭缓浠嬪川婵犲嫬骞堥梺纭呭閹活亞妲愰弴鐔哄ⅰ闂傚倷绶氬ḿ褍煤閵堝洠鍋撳顐㈠祮闁绘侗鍣i獮鎺懳旈埀顒傜不閿濆棛绡€闂傚牊绋戦弳娆徝瑰⿰鍫㈢暫闁哄矉缍佹慨鈧柍鎯版硾濠€杈ㄧ珶閺囩喓绡€婵﹩鍘鹃崢鐢告⒑缂佹ê濮﹂柛鎾村哺閹ɑ娼忛妸銈囩畾闂佸湱绮敮鐐存櫠濞戞氨纾肩紓浣贯缚濞插鈧娲栧畷顒冪亙闂佸憡鍔曢崯鐘诲礈濠靛牊宕叉繛鎴炨缚閺嗗棗鈹戦悩杈厡闁轰焦鐗滅槐鎾存媴娴犲鎽甸梺鍦嚀濞层倝鎮鹃悜钘夌闁规惌鍘介崓鐢告⒑閻熸澘鎮侀柣鎺炵畵閹骞栨担鍏夋嫽婵炶揪绲块崕銈夊吹閳ь剟姊洪幖鐐测偓鏍偋閻樿崵宓侀煫鍥ㄧ⊕閺呮悂鏌ㄩ悤鍌涘濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻戦妵鍕箻閸楃偟浠肩紓浣哄閸ㄥ爼寮诲☉銏犵疀闂傚牊绋掗悘鍫ユ倵閻熺増鍟炵紒璇插暣婵$敻宕熼姘鳖啋闁诲酣娼ч幗婊堟偩婵傚憡鈷戠痪顓炴媼濞兼劖绻涢懠顒€鏋庢い顐㈢箳缁辨帒螣閼测晜鍤岄梻渚€鈧偛鑻晶顔肩暆閿濆牆鍔垫い锔界叀閹繝濡舵径瀣帾闂佸壊鍋呯换鍐磻椤忓懐绠剧€瑰壊鍠曠花濠氬箚閻斿吋鈷戦悗鍦У閵嗗啴鏌ら崘鑼煟鐎规洘绻堥弫鍐焵椤掑嫧鈧棃宕橀鍢壯囨煕閳╁喚娈橀柣鐔稿姍濮婃椽鎮℃惔鈩冩瘣闂佺粯鐗曢妶绋跨暦閻戞ḿ绡€闁搞儜鍐ㄧギ闂備線娼ф蹇曟閺囥垹鍌ㄦい蹇撶墛閳锋垿鏌熼懖鈺佷粶闁告梹顨婇弻锟犲川椤旈敮濮囩紓浣稿€圭敮鐔妓囩€靛摜纾奸弶鍫涘妼缁楁碍绻涢悡搴g闁糕斁鍓濋幏鍛存煥鐎e灚缍楅梻鍌氬€峰ù鍥ь浖閵娾晜鍊块柨鏇炲€哥粻鏌ユ煕閵夘喖澧柡瀣╃窔閺岀喖宕滆鐢盯鏌¢崨顔藉€愰柡灞诲姂閹倝宕掑☉姗嗕紦闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亜顒㈡い鎰Г閹便劌顫滈崱妤€骞婄紓鍌氬€瑰銊╁箟缁嬫鍚嬮柛顐線缂冩洟姊婚崒娆戭槮婵犫偓闁秵鎯為幖娣妼缁愭鏌″搴′簽濞戞挸绉甸妵鍕冀椤愵澀娌梺缁樻尪閸庣敻寮婚敐澶婂嵆闁绘劖绁撮崑鎾诲捶椤撴稑浜炬慨妯煎亾鐎氾拷  闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌i幋锝呅撻柛銈呭閺屻倝宕妷锔芥瘎婵炲濮靛銊ф閹捐纾兼繛鍡樺笒閸橈紕绱撴笟鍥ф珮闁搞劌鐖兼俊鎾礃椤旂厧绐涢梺鍝勵槹閸ㄥ綊宕㈠ú顏呭€垫鐐茬仢閸旀碍銇勯敂璇茬仸鐎规洩绻濋獮搴ㄦ嚍閵壯冨妇闂傚⿴鍋勫ú锕€煤閺嶃劎澧¢梻鍌欐祰椤曆呪偓鍨浮瀹曟粓鎮㈡總澶嬬稁闂佹儳绻愬﹢杈╁閸忛棿绻嗘い鏍ㄧ閹牊銇勯銏㈢劯婵﹨娅i幏鐘绘嚑椤掑偆鍞规繝娈垮枟鑿ч柛鏃€鍨垮畷娲焵椤掍降浜滈柟鍝勭Ф椤︼箓鏌涢妶搴″⒋闁哄本鐩獮妯兼崉閻戞ḿ鈧顪冮妶搴′簻缂佺粯鍔楅崣鍛渻閵堝懐绠伴悗姘煎墴閹顢橀悜鍡樺瘜闂侀潧鐗嗗Λ娆戠矆閳ь剟姊洪悷鏉挎毐闂佸府绲介悾宄扳堪閸曨偒鍤ら柣搴㈢⊕鑿ら柟閿嬫そ濮婄粯绗熼崶褌绨介梺绋款儐閻╊垶骞婇悢纰辨晬婵炴垶鐟﹂悵宄邦渻閵堝棙鐓ュ褏鏅竟鏇㈡偂鎼搭喚鍞甸柣鐘烘鐏忋劑宕濋悢铏圭<濠㈣泛瀛╅鐘绘煃瑜滈崜姘额敊閺嶎厼绐楅柡宥庡幐閳ь剨绠撻弻銊р偓锝傛櫇缁犳艾鈹戦鐣岀畵闁活厼鐗嗗嵄闁绘垼濮ら埛鎴犵磼鐎n偒鍎ラ柛搴㈠姍閺岀喖鎮烽悧鍫熸倷闁捐崵鍋ら弻娑㈠箛閳轰礁唯濠碘剝褰冮悧濠勬崲濞戙垹骞㈡俊銈呭暟椤斿鈹戦悙鑼闁挎洏鍨归~蹇曠磼濡顎撴俊鐐差儏缁ㄨ偐鎲伴崱娆戠=闁稿本姘ㄨⅵ闂佺ǹ顑嗛幐鑽ゆ崲濞戞埃鍋撳☉娆嬬細闁活厹鍊濋弻娑㈠箻鐠虹儤鐏堥悗瑙勬礃濡炰粙宕洪埀顒併亜閹哄秹妾峰ù婊勭矒閺岀喖鎮滃Ο铏逛淮闂侀€炲苯澧紓宥咃工椤曪綁骞庣粵瀣櫌闂佸憡娲﹂崜娑㈠储闁秵鐓熼幖鎼灣缁夐潧霉濠婂懎鍘撮柣鎿冨墴椤㈡宕掑Δ鈧禍楣冩偡濞嗗繐顏痪鎯ь煼閺屾稑螖閳ь剟宕崸妤婃晪闁挎繂顦壕褰掓煟閺囨氨鍔嶉棄瀣⒒閸屾瑧顦﹂柟纰卞亜铻為悗闈涙憸娑撳秹鏌熼幑鎰靛殭闁藉啰鍠栭弻鏇熺箾閻愵剚鐝曢梺绋款儏濡繈寮诲☉姘勃闁告挆鈧Σ鍫濐渻閵堝懘鐛滈柟鍑ゆ嫹
核心提示: ADO+ 增加了哪些内容? 用最抽象的话来说,ADO+ 是具有更大的可伸缩性和互操作性的 ADO,ADO+ 引导数据种类的演变(转自 ms 二),就对象模型及编程问题而言,ADO 与 ADO+ 是完全不同的两个实体,ADO+ 专用于 Windows,但它可以与几乎所有的平台交换数据,尽管这样,ADO+ 源自 ADO
 
  
ADO+ 增加了哪些内容?



用最抽象的话来说,ADO+ 是具有更大的可伸缩性和互操作性的 ADO。就对象模型及编程问题而言,ADO 与 ADO+ 是完全不同的两个实体。尽管这样,ADO+ 源自 ADO 并保留了它的鼓舞人心的原则。



以更多互操作性和可伸缩性充实 ADO 的关键在于断开这个概念。在允许客户机端的脚本代码实现诸如排序、过滤和文档/视图模型之类的有趣和交互式功能的同时,断开的记录集作为一种保留系统资源的方式被引入到 ADO 2.0 中。ADO+ 与 ADO 相比具有三个主要优点:互操作性、增强的可伸缩性以及强类型。此外,ADO+ 便于数据组件间的数据共享以及在表中的记录间进行导航。



ADO+ 从一开始就被设计为对断开的数据集进行操作。断开的记录集只能有益于应用程序,因为它们是数据的本地视图,能够较快地处理和传输数据。ADO+ 将 xml 用作通用的传输格式。只要接收组件运行于有 XML 分析程序可用的平台上,就可以提供许多功能,同时确保互操作性。通过 XML 进行传输时,接收者不再必须是一个 COM 对象。XML 是一种简单但却功能强大的基于文本的标准,它近来已广为业界所接受,因而,目前有理由期待差不多每个平台上都会有一个 XML 分析程序。这样的话,接收组件就不会有任何的体系结构限制。任何一对软件组件都可以共享 ADO+ 数据,只要它们同意将相同的 XML 架构用于传输数据格式。图 2 对 ADO+ 适用于现有体系结构的方式进行了说明。





图 2. 在 DNA 方案中使用 ADO+



表示层可以通过 Win Forms 或 Web Forms(这两种编程单元专用于 Microsoft Visual Studio.NET 平台)使用或创建数据集。在任一种情况下,运行于业务层的组件都接收一个 XML 流并进行任意处理。这些组件可以重新构建一个 ADO+ 环境,也可以将数据按原始 XML 处理并使其适合于发送到物理数据存储器中。业务组件可以获取 ADO+ 数据,将其转换为 XML,然后将其发送回客户机。任何可以理解 XML 的应用程序都可以在任一点上介入这一架构。



可伸缩性是分布式系统在不丧失效率的情况下对数目逐渐增长的客户机进行服务的能力。可伸缩性是一个常与数据库有关的术语,这是由于分布式系统很大程度上依赖于数据库。可伸缩性无论对于数据库服务器还是对于封装了数据访问操作的任何软件制品都是一个可以持续存在的问题。可伸缩性的最大敌人就是对关键资源的滥用。在分布式系统中,关键通常意味着有限。数据库连接就是可以影响可伸缩性的关键资源的一个示例。固定数目的连接的可用性对系统的增长及其能力形成了一个实际的限制。好的软件了解这种情况并采取适当措施限制其影响。ADO+ 对这一问题的处理是怎样优于 ADO 的呢?并不是说 ADO 是不可伸缩的,而是说对断开的和内存中的表的内在使用(这是 ADO+ 的特征)使 ADO+ 成为内在具有更大可伸缩性的解决方案。它具有更大可伸缩性的原因在于断开的数据集不在很长的时间内保留锁或保持打开连接。如果使用 ADO,您必须编写代码才能获得这一功能;而使用 ADO+ 则会免费获得这一功能。



将 XML 用作数据集的传输语言可以比 ADO 更有效地进行数据共享。首先,绕过诸如记录集之类的 COM 对象所必需的 COM 汇集使组件可以使用它们要使用的任意数据类型的集合。这还会带来更好的性能,因为不再需要确保记录符合标准的 COM 数据类型的数据类型转换。XML 和 HTTP 的使用还允许数据跳过防火墙。正常情况下,防火墙允许 HTTP 数据包通过,但会阻止任何试图经由端口号不是 80 的端口进来的任何其它内容通过。





--------------------------------------------------------------------------------





ADO+ 的构成要素



现在我要介绍主要的 ADO+ 对象。我们以所有内容的起源开始,即 DataSet 对象。



数据集是 ADO 记录集的演化。数据集不过是数据库的断开连接的内存中的视图。就您可以拥有动态创建的数据集和数据表而不需要来自数据库管理系统 (DBMS) 的任何信息而言,数据集与数据源没有任何严格意义上的关系。换句话说,数据集使用了一些添加到 ADO 记录集中的功能:断开时工作的能力以及计划性地创建并以任何种类数据进行置入。数据集可以包含任意数目的表,每个表通常(但不总是)对应于一个数据库表或视图。DataTable 对象对应的表不过是一些行与列的集合。每一行保留其原始状态及其当前状态。



ADO 记录集一直经常以一种充当某种超级数组的通用数据类型出现。同样,ADO+ 数据集是一种提供以下功能的超级记录集:



一种容纳数据的更好和更丰富的编程接口。





一种不需要与实际数据源的任何内在绑定而提供更为广义的数据视图的对象模型。





一种用于输入和输出的基于 XML 的标准控制台。

ADO 记录集基本上是一种(可能是分层的)记录集合,它带有一些特定方法,用于完成一些有趣功能。其中包括包括滚动、排序、过滤、书签。记录集本质上是表在内存中的副本。而数据集看起来更象 SQL Server 或 access 数据库,它是一个包含更多表、特定视图和外键关系的实体。



数据集对象模型反映了这一较大的范围,它允许您查看跨越多个数据表、关系、扩展属性和行的多个集合的可用数据 — 这还可用于说明非持久数据或只是来自不是数据库的另一个持久存储介质的数据。



ADO 记录集允许您将内容保存到 XML 中,并从一个外部 XML 文件重新构建该内容。然而,采用的缺省 XML 架构是针对导出/导入 ADO 记录集而优化的,而不是针对实际数据交换。ADO XML 架构包含许多关于列类型和位置以及其它元数据的信息。如果您希望从某一 XML 文档中重新构建记录集,则这些信息是至关重要的,但如果您只是希望传递数据并使接收者使用它,则这些信息没有什么用处。有了 ADO+ 数据集,XML 架构更为精练,因为被表示的对象与关系数据库没有直接关系,尽管对象可以用来精密地再现数据库。ADO+ 数据集对数据进行描述,而 ADO 记录集则对由某一表中获取的一个记录集合进行描述。这就是 ADO+ 数据模型的动人之处。



ADO+ XML 架构只是再现表以及数据集中定义的关系,构建一个 DataSet 对象的责任则留给 ADO+ 运行时完成。ADO XML 格式由于过于具体而无法真正实现互操作。它还由于过于繁琐,如果不进行数据压缩的人工干预,它就无法进行高效的汇集。ADO+ 数据集体系结构的鼓舞人心的原则与导致我创建 javaScript 的 Recordset 对象的原因之间存在一种底层的相似之处。在这两种情形中,您都将数据说明(例如,一个 XML 字符串)转换为一个专用于平台的操作对象(即一个 Javascript 对象)。在这样做的过程中,您安全地将您的数据从一层发送到另一层,而不考虑安装的操作系统或软件。





--------------------------------------------------------------------------------





ADO+ 命令



尽管 DataSet 对象提供一个内存中数据存储的工具,您还需要另一个工具对各种表进行创建和初始化。这一工具就是 DataSetCommand 对象,它代表一个将使用连接和命令的细节隐藏起来的集中式控制台。DataSetCommand 对象允许某一 DataSet 对象与源数据存储器间的数据检索和保存。它负责从物理存储器中提取数据,然后将其推送到各数据表和关系中。DataSetCommand 对象还负责向实际数据库传输任何更新、插入或删除操作。DataSetCommand 对象通过底层 OLE DB 提供者能够理解的 SQL 命令或命令字符串完成这一功能。DataSetCommand 对象以两种形式存在:



SQLDataSetCommand 对象





ADODataSetCommand 对象

它们可以被当作在数据表和数据源中的对应表之间的代理。数据源是用于 SQLDataSetCommand 对象的 SQL Server 7.0(或更新版本)以及用于 ADODataSetCommand 对象的任何其它 OLE DB 提供者。



一般说来,ADO+ 能够识别并处理两种类型的数据源:SQL Server 7.0(及更新版本)以及可以通过 OLE DB 提供者进行访问的任何数据源。这些又称为被管理的提供者。



作为使用 DataSetCommand 对象的一种替换(如代码示例 1 中所示),您可以通过使用诸如连接和命令之类的较为熟悉的对象,直接对被管理的提供者进行操作。



代码示例 1



Dim oDS as DataSet

Dim oCMD as SQLDataSetCommand



oDS = New DataSet

oCMD = new SQLDataSetCommand("Select * from employees", strConn)

oCMD.FillDataSet(oDS, "EmployeesList")



Dim oRow as DataRow

For Each oRow in oDS.Tables(0).Rows

  Console.WriteLine(oRow(0).ToString())

Next



通过查看这种类型的 ADO+ 代码,您会发现它与旧式的 ADO 编程没有多大的差别。它具有新的对象、新的编程接口、经过改进的新功能,但代码模式相同。如代码示例 2 中所示。



代码示例 2



Dim oCN As SQLConnection

Dim oCMD As SQLCommand

Dim oDR As ADODataReader

oCN = New SQLConnection(strNWind)

oCMD = New SQLCommand("MyStoredPRoc 'Davolio'", oCN)

oCMD.CommandType = CommandType.StoredProcedure

Try

  oCN.Open()

  oCMD.Execute(oDR)



  While oDR.Read

   Console.WriteLine(oDR("LastName").ToString))

  End While

Catch e As Exception

   Console.WriteLine(e.ToString)

Finally

   oDR.Close()

   oCN.Close()

End Try



请注意,上述代码具有 Microsoft Visual Basic® 7.0 引入的一些语法元素的特征 — 特别是最终取代了 On Error 机制的 Try-Catch 结构。ADO+ 代码充分利用了提供诸如 Console 之类的系统对象的.NET 运行时服务。



还有什么特殊的功能可以帮助您确定革新的 DataSetCommand 方法是否优于使用传统的 ADO 吗?通过使用 DataSetCommand 对象与数据源进行通信,基本上与通过使用 ADO 连接和命令相同,并带有一个重要的推论:所有的 ADO+ 对象,如 DataSetCommand 对象,都可以通过派生新的、更专用的类而进行定制。因此,举例来说,您可以控制将数据集的更改传送到数据库的方式,以及(比方说)优化性能、对数据进行压缩或加密、执行数据验证以及许多其它功能。





--------------------------------------------------------------------------------





强类型编程



您通过 ADO 对数据库对象和类似 Recordset 和 Fields 的集合进行操作。除了将实际数据视为某种参数外,这种方法没有什么错误:



Set oRS = New ADODB.Recordset

oRS.Open strSQL, strConn

While Not oRS.EOF

MsgBox oRS("FirstName") & " " & oRS("LastName")

oRS.MoveNext

Wend



在上述 ADO 代码片断中,第一个和最后一个名称被用作进入 Recordset 和 Fields 集合的入口点。由于 Visual Basic 的缺省属性,您可以编写相对容易阅读的代码。依照 ADO,某一给定记录字段的“完整对象模型路径”应为:



oRS.Fields("firstname").value



此外,ADO 总是使用 Variant 数据类型,以便与基于脚本的环境(特别是 asp)相一致。



ADO+ 通过提供借助数据的自然名称对存储于数据集中的数据进行访问的能力,使数据库编程更进了一步。如果要在某一数据集中寻址某一表,您可以使用该表的 ADO+ 名称并对使用列和行的名称对列和行进行访问,而不是通过基于集合的方法。此外,所有的有关变量都拥有一个特定的(与 Variant 相对)数据类型。这称为强类型编程。上面显示的对一个 Employees 表中的 FirstName 和 LastName 进行操纵的代码可以按下面的形式重新编写:



MsgBox Employees.FirstName & " " & Employees.LastName



一种具有类型的 DataSet 即是一个自 DataSet 继承的类。采用数据集的强类型版本是有益的,原因是 IDE 自身可以实时地向您通知可能的类型不匹配错误,而且 Microsoft IntelliSense® 技术可以随时向您建议一些方法和属性。





--------------------------------------------------------------------------------





摘要



ADO+ 不仅仅是对数据进行操作的另一个对象模型。从本质上说,它是在范围更广、跨平台方案中的 ADO 的重现。ADO+ 是扩展的 ADO,它在能够理解 XML 的任何平台上与任何软件组件协同工作。它对数据进行建模,而不是对数据库或数据提供者。它从数据库基础结构中提取数据,并将其置于一种中性的环境中,数据在这种环境中就是数据,无论存储介质、物理结构或用来对其进行访问的 API 究竟是什么。其关键即是 XML,它代表了一种用于 ADO+ 数据集的 I/O 控制台。另一个重要的方面是主要对象(即数据集)的断开连接和在内存中的性质。



因此,您可以发送数据的 XML 说明,并让 ADO+ 服务器端的组件将其构建为一个数据集。您也可以拥有非 ADO+ 组件,它们只是获取该 XML 说明后对其运行自己的分析程序并获得同样的结果。ADO+ 专用于 Windows,但它可以与几乎所有的平台交换数据。请留意跟踪 ADO+ 演变的后续文章。   
  
   
  


原作者:不详

来 源:www.microsoft.com

Tags:ADO 引导 数据

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接