<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > .NET的數(shù)據(jù)傳輸之道

          .NET的數(shù)據(jù)傳輸之道

          作者: 時(shí)間:2012-05-02 來(lái)源:網(wǎng)絡(luò) 收藏

          litm.SubItems(1)=XMLRS(Description)

          本文引用地址:http://www.ex-cimer.com/article/149158.htm

          litm.SubItems(2)=XMLRS(Price)

          XMLRSMoveNext

          Loop

          XMLRSClose

          代碼說(shuō)明:

          傳遞給SOAP方法的兩個(gè)參數(shù)(DNS和SQL)是從TextBox控件中取得的,其返回值是XML格式的ADO數(shù)據(jù)集。如需了解同SOAPCall函數(shù)及其參數(shù)有關(guān)的更詳細(xì)信息,請(qǐng)參閱我的循序漸進(jìn)文章“為Microsoft做好準(zhǔn)備”。

          正如您看到的,整個(gè)實(shí)現(xiàn)方式類似于ADORecordset的使用方式(簡(jiǎn)化了代碼復(fù)用)。以“XMLRS…”開(kāi)始的這些函數(shù)保存在XMLRS.bas模塊,讓我們深入到模塊內(nèi)部看一下。以下是XMLRSOpen函數(shù)中的一部分代碼:

          'CreateDOMobject

          SetpoXML=CreateObject(Microsoft.XMLDOM)

          'Loadstring

          psXML=XML

          'LoadDOM

          poXML.loadXMLpsXML

          'Positiondatanodes

          SetpoDataNodes=poXML.documentElement.selectNodes(//rs:data)

          SetpoDataNodes=poDataNodes.Item(0).childnodes

          代碼說(shuō)明:

          psXML變量用來(lái)存放ADORecordset的XML表述。

          PoXML變量是XMLDOM對(duì)象,用來(lái)存放記錄集數(shù)據(jù)。

          PoDataNodes變量保存所有記錄集數(shù)據(jù)行的XML元素。

          我們現(xiàn)在有了一個(gè)對(duì)象,該對(duì)象包含了記錄集中的所有數(shù)據(jù)行,它就是我們開(kāi)始數(shù)據(jù)導(dǎo)航所需要的東西。我們可以使用XMLRSMoveFirst和XMLRSMoveNext函數(shù)進(jìn)行數(shù)據(jù)導(dǎo)航。下面讓我們仔細(xì)考察一下XMLRSMoveNext函數(shù):

          'ChecknotEOF

          IfNotXMLRSEOF()Then

          'Increasepointer

          piRecordPos=piRecordPos+1

          EndIf

          為了理解整個(gè)程序邏輯,讓我們看看XMLRSEOF函數(shù):

          'CheckEOF

          IfpiRecordPos>poDataNodes.length-1ThenXMLRSEOF=True

          現(xiàn)在,我們需要知道如何取出實(shí)際數(shù)據(jù),完成這一工作的是XMLRS:

          'Checkiffieldnumberorfieldname

          IfIsNumeric(FieldID)Then

          'GetFieldData

          XMLRS=poDataNodes(piRecordPos).Attributes(FieldID).Text

          Else

          'GetFieldData

          XMLRS=poDataNodes(piRecordPos).Attributes.getNamedItem(FieldID).Text

          EndIf

          正如您所看到的,我們可以提供一個(gè)字段名(就像我在窗體代碼中所做的)以及一個(gè)字段序號(hào)

          如需了解更多詳細(xì)信息,我建議您認(rèn)真閱讀完整的示例的代碼。

          助你上路

          您應(yīng)該仔細(xì)分析XMLRS.bas模塊,我在此只提供了幾個(gè)必需的函數(shù)。以便您能很快上手。當(dāng)然,我們還應(yīng)該實(shí)現(xiàn)更多的ADORecordset功能。因?yàn)樵撃K使用了XMLDOM對(duì)象,您需要具有一些XML知識(shí)。

          當(dāng)然,這并不是一個(gè)解決這個(gè)問(wèn)題的“企業(yè)級(jí)”解決方案。我希望ADOCE能在將來(lái)在Recordset(或者類似構(gòu)造)中加入對(duì)XML的支持,這樣就不用再使用XMLRS.bas模塊了。如果容量發(fā)生了變化,只需對(duì)我提供的這些代碼做一些小的修改即可,從而保護(hù)了您的前期投資和工作。

          同時(shí),如果您決定在該模塊的基礎(chǔ)上完成一些開(kāi)發(fā)工作,您可以同我聯(lián)系。我將利用您完成的增強(qiáng)版本對(duì)本文所介紹的示例代碼進(jìn)行升級(jí)。這將極大地增加您的知名度!

          未來(lái)會(huì)怎樣

          我相信,在不遠(yuǎn)的將來(lái),所有的特性都將在PocketPC得到應(yīng)用。其中可能包括類似“連接斷開(kāi)”式ADORecordsets和XML支持這樣一些特性。我甚至相信,將ADORecordset數(shù)據(jù)(XML)封裝進(jìn)SOAP調(diào)用這一過(guò)程對(duì)開(kāi)發(fā)人員來(lái)說(shuō)將是透明的。

          您可以修改XMLRS.bas以使其適應(yīng)新的XML數(shù)據(jù)集結(jié)構(gòu),您也可以簡(jiǎn)單地對(duì)代碼進(jìn)行升級(jí),使用Recordset功能代替XMLRS中的函數(shù)。

          小結(jié)

          從任何地方對(duì)企業(yè)數(shù)據(jù)加以訪問(wèn)的能力所蘊(yùn)藏的能量是異常巨大的。在多層解決方案(帶有組件)中,您可以允許您的業(yè)務(wù)邏輯被世界各地的用戶所使用,甚至是那些無(wú)線用戶。


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: 數(shù)據(jù)傳輸 .NET

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();