当前位置:文档之家› vb怎样访问网络上的1个mdb数据库

vb怎样访问网络上的1个mdb数据库

vb怎样访问网络上的1个mdb数据库

我在个人网站上放了1个mdb数据库,里边是1个用户信息表,用vb写了个程序,该程序入口需要访问该数据库,查找用户的存在,求高手指点.
地址路径:http://handgood.124107.168.bz/can.mdb

https://www.doczj.com/doc/7316853315.html,/z31415926535/pic/item/c65e8a45c1a6d6e4b3b7dc19.jpg
仅供参考,希望对你有用

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.0
Option Explicit
Private rs As ADODB.Recordset
'从远程数据库得到内容
Private Sub Command5_Click()
‘提交一个HTTP请求。
Set rs = New ADODB.Recordset
rs.Open "http://localhost/webxml\getinfo.asp "
Set DataGrid1.DataSource = rs
End 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形式返回
'需要加上 这句,否则无法返回中文
%>


<%=retval%>


相应的客户端vb代码:
Private Sub Command3_Click()
Dim httpRequest As MSXML.XMLHTTPRequest
Set httpRequest = New MSXML.XMLHTTPRequest
Dim StrXml As String
'构造出要上传的XML串,这里节点使用中文
StrXml = " " & _
" <项目编号> " & Txtbh.Text & " " & _
" <项目名称> " & Txtname.Text & " " & _
" <价格> " & Txtprice.Text & " " & _

" <种类> " & TxtCategory.Text & " " & _
" <发生日期> " & Txtpdate.Text & " " & _
" "

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 strretval
End Sub

3)多条数据上传
putinfo.asp
<%@ Language=VBScript %>

<%
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
%>


<%=retval%>


相应的vb客户端代码
Private Sub Command2_Click()
Dim rs1 As New ADODB.Recordset
rs1.CursorLocation = adUseClient
rs1.CursorType = adOpenKeyset
rs1.LockType = adLockBatchOptimistic

rs1.Open "select * from test ", conn, adOpenDynamic, adLockPessimistic

'由于RequestXml所包含的东西过

多,我们直接生成xml文件
'直接使用了数据库字段,没有使用中文命名
Dim strXML
Dim fm
strXML = " "
rs1.MoveFirst
Do While Not rs1.EOF
strXML = strXML & " "
For Each fm In rs1.Fields
strXML = strXML & " < " & https://www.doczj.com/doc/7316853315.html, & "> " & fm.Value & " "
Next
strXML = strXML & "
"
rs1.MoveNext
Loop
strXML = strXML & "
"
Set rs1 = Nothing


Dim httpRequest As New MSXML.XMLHTTPRequest
httpRequest.Open "POST ", "http://localhost/webxml/putinfo.asp ", False
httpRequest.send strXML

If httpRequest.Status <> 200 Then
MsgBox httpRequest.statusText, , httpRequest.Status
Exit Sub
End 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,以达到最好的效果。
下载本例子的完整代码

相关主题
文本预览
相关文档 最新文档