.NET的數據傳輸之道
litm.SubItems(1)=XMLRS(Description)
本文引用地址:http://dyxdggzs.com/article/149158.htmlitm.SubItems(2)=XMLRS(Price)
XMLRSMoveNext
Loop
XMLRSClose
代碼說(shuō)明:
傳遞給SOAP方法的兩個(gè)參數(DNS和SQL)是從TextBox控件中取得的,其返回值是XML格式的ADO數據集。如需了解同SOAPCall函數及其參數有關(guān)的更詳細信息,請參閱我的循序漸進(jìn)文章“為Microsoft.NET做好準備”。
正如您看到的,整個(gè)實(shí)現方式類(lèi)似于A(yíng)DORecordset的使用方式(簡(jiǎn)化了代碼復用)。以“XMLRS…”開(kāi)始的這些函數保存在XMLRS.bas模塊,讓我們深入到模塊內部看一下。以下是XMLRSOpen函數中的一部分代碼:
'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對象,用來(lái)存放記錄集數據。
PoDataNodes變量保存所有記錄集數據行的XML元素。
我們現在有了一個(gè)對象,該對象包含了記錄集中的所有數據行,它就是我們開(kāi)始數據導航所需要的東西。我們可以使用XMLRSMoveFirst和XMLRSMoveNext函數進(jìn)行數據導航。下面讓我們仔細考察一下XMLRSMoveNext函數:
'ChecknotEOF
IfNotXMLRSEOF()Then
'Increasepointer
piRecordPos=piRecordPos+1
EndIf
為了理解整個(gè)程序邏輯,讓我們看看XMLRSEOF函數:
'CheckEOF
IfpiRecordPos>poDataNodes.length-1ThenXMLRSEOF=True
現在,我們需要知道如何取出實(shí)際數據,完成這一工作的是XMLRS:
'Checkiffieldnumberorfieldname
IfIsNumeric(FieldID)Then
'GetFieldData
XMLRS=poDataNodes(piRecordPos).Attributes(FieldID).Text
Else
'GetFieldData
XMLRS=poDataNodes(piRecordPos).Attributes.getNamedItem(FieldID).Text
EndIf
正如您所看到的,我們可以提供一個(gè)字段名(就像我在窗體代碼中所做的)以及一個(gè)字段序號
如需了解更多詳細信息,我建議您認真閱讀完整的示例的代碼。
助你上路
您應該仔細分析XMLRS.bas模塊,我在此只提供了幾個(gè)必需的函數。以便您能很快上手。當然,我們還應該實(shí)現更多的ADORecordset功能。因為該模塊使用了XMLDOM對象,您需要具有一些XML知識。
當然,這并不是一個(gè)解決這個(gè)問(wèn)題的“企業(yè)級”解決方案。我希望ADOCE能在將來(lái)在Recordset(或者類(lèi)似構造)中加入對XML的支持,這樣就不用再使用XMLRS.bas模塊了。如果容量發(fā)生了變化,只需對我提供的這些代碼做一些小的修改即可,從而保護了您的前期投資和工作。
同時(shí),如果您決定在該模塊的基礎上完成一些開(kāi)發(fā)工作,您可以同我聯(lián)系。我將利用您完成的增強版本對本文所介紹的示例代碼進(jìn)行升級。這將極大地增加您的知名度!
未來(lái)會(huì )怎樣
我相信,在不遠的將來(lái),所有的.NET特性都將在PocketPC得到應用。其中可能包括類(lèi)似“連接斷開(kāi)”式ADORecordsets和XML支持這樣一些特性。我甚至相信,將ADORecordset數據(XML)封裝進(jìn)SOAP調用這一過(guò)程對開(kāi)發(fā)人員來(lái)說(shuō)將是透明的。
您可以修改XMLRS.bas以使其適應新的XML數據集結構,您也可以簡(jiǎn)單地對代碼進(jìn)行升級,使用Recordset功能代替XMLRS中的函數。
小結
從任何地方對企業(yè)數據加以訪(fǎng)問(wèn)的能力所蘊藏的能量是異常巨大的。在多層解決方案(帶有組件)中,您可以允許您的業(yè)務(wù)邏輯被世界各地的用戶(hù)所使用,甚至是那些無(wú)線(xiàn)用戶(hù)。
評論