谁有vb+xml+aps访问WEB数据库的源码,我想访问我网站的ACCESS数据库网络的教程越看越迷糊,希望大侠们帮助啊,邮箱:[email protected]

解决方案 »

  1.   

    COM+系列——设计可伸缩的应用龙卷风关键字:XML,HTTP,COM+1.  伸缩性伸缩性是衡量应用在同一时间内能够处理多少用户的尺度。也是反映应用程序能否满足重要应用的一个指标。在你的应用程序中到底可以容纳多少用户,每个用户每隔多久向服务器提交一次请求,你的用户所处的位置,如局域网还是interner中。这些问题在设计应用的时候,你需要考虑。在设计分布式应用之前,一个问题就是使用的协议。如DCOM、HTTP和MSMQ。DCOM的缺点是显著的。如不能穿越防火墙。不能利用基于请求的负载平衡技术,因而限制了并发用户的数量,还要对每台客户机进行大量的配置等等。HTTP实现简单及各个平台的支持越来越受到欢迎。事实上,构建COM+体系结构是建立在下面这个基础之上的:一个应用必须使用HTTP来实现客户到服务的通信才能获得最大的伸缩性。 2.  实际的问题经常我们会遇到这样的问题,如一个总店与多个分店的情况,要求每天分店将业务数据上传到总店。彼此相隔较远。总店的环境:有自己的固定IP 的WEB服务器(或者没有固定IP)的,或者没有自己的服务器,仅仅有一个虚拟空间的网站。分店的环境:可以通过拨号方式连接。3.达到的要求       总店每天可以通过网站及时的看到分店的情况。并且数据要做到本地保留。4.常见的解决办法最多的一种方式就是分店将数据导出成txt文件,拨号连接成功后,将txt传送到某个ftp目录或者发送到指定的Email里。总店手工接收或者程序接收后,再做处理。        还有一种就是分店的数据库直接连接总店的数据库,做保存更新操作。5.使用HTTP和XML来实现       就是客户端应用程序通过一个XML文档传递参数,向Web服务器提交一个HTTP请求。服务端使用一个Asp页面得到该参数,执行其方法,然后使用XMl文档向客户端返回数据。先看看服务端ASP的代码:1).从服务端返回数据getinfo.asp(以流的方式返回记录集)<%@ Language=VBScript %><%set conn=Server.CreateObject("ADODB.connection")conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("web.mdb")   dim rs  Set rs = Server.CreateObject("ADODB.Recordset")  rs.open "select * from test",conn  rs.save response,1  rs.close%>这里说明一下:只要客户端在请求中发送了符合格式的XML文档,ASP中的Request和Response对象就能工作。(这项技术只能在IIS5和Windows 2000中以及各自的高版本中使用。)在客户端使用vb'引用microsoft activex data object 2.x library‘引用microsoft XML,version2.0Option ExplicitPrivate rs As ADODB.Recordset'从远程数据库得到内容Private Sub Command5_Click()‘提交一个HTTP请求。Set rs = New ADODB.Recordsetrs.Open "http://localhost/webxml\getinfo.asp"Set DataGrid1.DataSource = rsEnd Sub 2)单个记录提交到远程asp文件Getsingleinfo.asp(数据增加并返回结果)<%@ Language=VBScript %><%'这里需要修改,返回客户的xml响应文档Response.ContentType = "text/xml" set conn=Server.CreateObject("ADODB.connection")conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("web.mdb")    dim xmldom  ' set xmldom = Server.CreateObject("Microsoft.XMLDOM")   set xmldom = Server.CreateObject("MSXML.DOMDocument")   xmldom.load Request    dim sid,name,price,catagory,pdate   sid = xmldom.selectSingleNode("//项目编号").text   name = xmldom.selectSingleNode("//项目名称").text   price = xmldom.selectSingleNode("//价格").text   catagory = xmldom.selectSingleNode("//种类").text   pdate =xmldom.selectSingleNode("//发生日期").text    dim strsql,retval   on error resume next   strsql="insert into test(sid,name,price,catagory,pdate) values('"& sid &"','"& name &"','"& price &"','"& catagory &"','"& pdate &"')"   'response.write strsql   conn.execute strsql   if err.number=0 then      retval="数据成功提交"   else      retval="数据提交失败,请检查你的数据"   end if      set xmldom = Nothing   set conn=nothing'下面的代码是将结果以xml形式返回'需要加上<?xml version="1.0" encoding="gb2312"?>这句,否则无法返回中文%><?xml version="1.0" encoding="gb2312"?><Response>  <retval><%=retval%></retval></Response> 相应的客户端vb代码:Private Sub Command3_Click()  Dim httpRequest As MSXML.XMLHTTPRequest  Set httpRequest = New MSXML.XMLHTTPRequest  Dim StrXml As String  '构造出要上传的XML串,这里节点使用中文  StrXml = "<Request>" & _           "<项目编号>" & Txtbh.Text & "</项目编号>" & _           "<项目名称>" & Txtname.Text & "</项目名称>" & _           "<价格>" & Txtprice.Text & "</价格>" & _           "<种类>" & TxtCategory.Text & "</种类>" & _           "<发生日期>" & Txtpdate.Text & "</发生日期>" & _           "</Request>"                 httpRequest.Open "POST", "http://localhost/webxml/putsingleinfo.asp", False    httpRequest.send StrXml    '如果错误  If httpRequest.Status <> 200 Then    MsgBox httpRequest.statusText, , httpRequest.Status    Exit Sub  End If    '以下是判断数据是否正确提交  Dim strretval As String  Dim ResponseXml As DOMDocument  Set ResponseXml = New DOMDocument  Set ResponseXml = httpRequest.ResponseXml  strretval = ResponseXml.selectSingleNode("//retval").Text  MsgBox strretvalEnd Sub 3)多条数据上传putinfo.asp<%@ Language=VBScript %><!--#include file="adovbs.inc"--><%Response.ContentType = "text/xml" set conn=Server.CreateObject("ADODB.connection")conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("web.mdb")   dim rs  on error resume next  Set rs = Server.CreateObject("ADODB.Recordset")  dim xmldom  ' set xmldom = Server.CreateObject("Microsoft.XMLDOM")   set xmldom = Server.CreateObject("MSXML.DOMDocument")   xmldom.load Request    dim sid,name,price,catagory,pdate   Set xmlNode = xmlDom.documentElement   Set objRetValNode = xmlDom.documentElement    For i = 0 To xmlNode.childNodes.length - 1         sid =  xmlnode.childNodes(i).childNodes(0).Text         name =  xmlnode.childNodes(i).childNodes(1).Text         price =  xmlnode.childNodes(i).childNodes(2).Text         catagory =  xmlnode.childNodes(i).childNodes(3).Text         pdate =  xmlnode.childNodes(i).childNodes(4).Text    strsql="insert into test(sid,name,price,catagory,pdate) values('"& sid &"','"& name &"','"& price &"','"& catagory &"','"& pdate &"')"   'response.write strsql   conn.execute strsql   next    if err.number=0 then      retval="数据成功提交"   else      retval="数据提交失败,请检查你的数据"   end if      set conn=nothing%><?xml version="1.0" encoding="gb2312"?><Response>  <retval><%=retval%></retval></Response> 相应的vb客户端代码Private Sub Command2_Click()Dim rs1 As New ADODB.Recordsetrs1.CursorLocation = adUseClientrs1.CursorType = adOpenKeysetrs1.LockType = adLockBatchOptimistic rs1.Open "select * from test", conn, adOpenDynamic, adLockPessimistic '由于RequestXml所包含的东西过多,我们直接生成xml文件'直接使用了数据库字段,没有使用中文命名Dim strXMLDim fmstrXML = "<xml>"rs1.MoveFirstDo While Not rs1.EOFstrXML = strXML & "<row>"For Each fm In rs1.FieldsstrXML = strXML & "<" & fm.name & ">" & fm.Value & "</" & fm.name & ">"NextstrXML = strXML & "</row>"rs1.MoveNextLoopstrXML = strXML & "</xml>"Set rs1 = Nothing  Dim httpRequest As New MSXML.XMLHTTPRequesthttpRequest.Open "POST", "http://localhost/webxml/putinfo.asp", FalsehttpRequest.send strXML If httpRequest.Status <> 200 Then    MsgBox httpRequest.statusText, , httpRequest.Status    Exit SubEnd If Set rs = New ADODB.Recordset'重新加载rs.Open "http://localhost/webxml\getinfo.asp"Set DataGrid1.DataSource = rs   '以下是判断数据是否正确提交  Dim strretval As String  Dim ResponseXml As DOMDocument  Set ResponseXml = New DOMDocument  Set ResponseXml = httpRequest.ResponseXml  strretval = ResponseXml.selectSingleNode("//retval").Text  MsgBox strretval  End Sub 结束语:这个例子充分的体现了HTTP和XML的优势。对于客户来说,可以订制自己的xml格式,清晰易懂。安全性大大的提高。而且可以在不同的应用服务器上加以扩展使用。如果要提高性能和加大安全性,在服务端可以使用COM组件来扩展ASP,以达到最好的效果。
    http://blog.csdn.net/online/archive/2004/07/07/35994.aspx
      

  2.   

    这个例子有源码么,我看了两天,也不太明白,测试一直都是出错!希望给与帮助,在这先谢谢了!!!!!![email protected]
      

  3.   

    是asp 为什么没人回答呢?都不会么???