大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> NET专区 -> 增补透视一文:将ADO.NET或Webservice返回的DataSet转换成ADODB.Recor

增补透视一文:将ADO.NET或Webservice返回的DataSet转换成ADODB.Recor

时间: 2021-07-31 作者:daque

牢记在《透视和安排你的企业和商务体例》一文中,咱们计划了相关组件、soap、webservice的少许题目,更加对于如许的少许题目:怎样天生一个结构一个大略的三层构造(window dna)怎样将现有的组件表露出来,变成一个webservice怎样运用ms soap toolkit来天生client耗费webservice怎样在dotnet中挪用soap toolkit天生的webservice怎样处置和传输adodb.recordset典型的数据,实行本人的ctm。怎样将暂时的组件用asp.net封装成webservice举行了少许计划和试验,在计划到用asp.net封装咱们的组件成webservice,而后运用ms soap toolkit耗费webservice时,我曾跳过了一个题目,那即是怎样接受webservice传输过来的成组数据。牢记代码是如许的: dim retxml as objectdim soapclient as mssoaplib.soapclient set soapclient = new mssoaplib.soapclient call soapclient.mssoapinit("http://dereksvr/authors/authors.asmx?wsdl")set retxml = soapclient.getauthors()getauthors()归来的是一个dataset典型,在发端天生webservice时咱们是如许封装的: <webmethod()> public function getauthors() as dataset dim obj as bus_authors.authors dim rst as adodb.recordset dim mydataadapter as oledb.oledbdataadapter dim retdataset as dataset obj = new bus_authors.authors() rst = new adodb.recordset() mydataadapter = new oledb.oledbdataadapter() retdataset = new dataset() rst = obj.getauthors() mydataadapter.fill(retdataset, rst, "getauthors") getauthors = retdataset end function而对于vb来说retxml将是不不妨看法和径直运用的,幸亏dataset是鉴于xml的,究竟上它是有顺序的,咱们不妨经过径直考察.asmx文献(http://dereksvr/authors/authors.asmx)来在网页上挪用这个webservice 的getauthors(),在ie中咱们不妨看到这个dataset的构造,如许咱们就不妨找到顺序,来运用这个dataset中的数据。按照上头的情景我写了一个因变量不妨将dataset变换成adodb.recordsetpublic function convdatasettorecordset(byval vonl as ixmldomnodelist, byval vstablename as string) as adodb.recordset dim ixmltablenode as ixmldomnode dim ixmlrecordnode as ixmldomnode dim ixmlfieldnode as ixmldomnode dim ixmlnodelist as ixmldomnodelist dim retrs as adodb.recordset dim sxpath as string on error goto errhandle ' create recordset using the xsd schema sxpath = "//xsd:element[@name=""" & vstablename & """]/xsd:complextype/xsd:sequence" set ixmltablenode = vonl.item(1).selectsinglenode(sxpath) set retrs = new adodb.recordset for each ixmlfieldnode in ixmltablenode.childnodes if not ixmlfieldnode.attributes is nothing then call retrs.fields.append(ixmlfieldnode.attributes(0).text, getdatatype(ixmlfieldnode.attributes(1).text), 512) end if next ' add the data to the recordset sxpath = "//" & vstablename set ixmlnodelist = vonl.item(3).selectnodes(sxpath) call retrs.open for each ixmlrecordnode in ixmlnodelist call retrs.addnew for each ixmlfieldnode in ixmlrecordnode.childnodes if len(ixmlfieldnode.basename) > 0 then retrs.fields(ixmlfieldnode.basename) = ixmlfieldnode.text end if next next if not (retrs.bof and retrs.eof) then call retrs.movefirst set convdatasettorecordset = retrserrexit: exit functionerrhandle: set convdatasettorecordset = nothing resume errexitend functionprivate function getdatatype(byval vstype as string) as adodb.datatypeenum ' convert the xsd datatype to a ado datatype select case vstype case "xsd:string" getdatatype = advarchar case "xsd:int" getdatatype = adinteger case "xsd:datetime" getdatatype = addate case "xsd:decimal" getdatatype = addouble case "xsd:boolean" getdatatype = adboolean end selectend function对于getdatatype中的典型我没有逐一试过,只运用了罕见的几个,简直的不妨拜见底下的链接:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk30/htm/xmrefsupporteddatatypeconversions.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdcstdatatypeenum.asp连接增添,以保护不妨适合你简直的须要。而后套用咱们在第三篇中的展现层的因变量表露在一个grid中:set retxml = soapclient.getauthors() set result = convdatasettorecordset(retxml, “getauthors”) lvwheadname lstauthors, strheaders adofilllvw result, lstauthors想想挺有道理,发端是adodb.recordset典型的,而后在webservice中变换成dataset典型,而后又变换成adodb.recordset。xml是一个宏大的介质,而dotnet中对于dataset比上一版的recordset也将是一种冲破。对于dataset的运用也将是极端精巧和没有控制的,由于它的中心和普通是xml。既是是增加,我也应诉求将透视和安排一文中波及到的例子的project和代码上载到csdn,其余一个是拷屏的图片,蓄意两者对于观赏和领会会有一些扶助,简直的安置进程我就简略了。关系文献:http://263.csdn.net/filebbs/files/2001_10/t_724_1.zip(code)http://263.csdn.net/filebbs/files/2001_10/t_724_2.zip(jpg)--------------------------------------------------------------------------------更加:之上笔墨和图片波及其余人的秘密和部分权力,如非被受权或经自己承诺,任何网站或期刊请不要登载、连载、改编、转贴或已其余情势举行传递。之上一切笔墨和图片只用来里面交谈,不作任何消息公布和贸易用处。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.