VB程序员博客
本文解决vb6+access网络访问,以及vb6+mssql在internet环境下连接十分低效的问题。
首先来看看基于ado+access的单机版应用代码: (源码下载地址: http://www.tebny.com/2code/adodemo.rar)
这是一个很典型的ado+access的应用,其中包含了增、删、改、查的各种操作.由于代码比较简单,这里就不赘述了。
我们的任务是如何将这个典型的单机应用,只增加两行代码使其扩展为网络版。
第一步:下载并注册NetData控件: http://www.tebny.com/2code/netdatademo.rar
第二步:建立服务器端程序:
2.1 新建一个vb工程,并保存,加入刚刚注册好的NetData控件,然后将NetDataServer控件放到form1上。
2.2 在Form_Load事件中加入:
NetDataServer1.Start "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=cs.mdb;", "8888"
这个方法有两个参数,第一个是标准的ado连接字符串,第二个是服务器端占用的端口,这里设置为8888
这里需要注意的是连接字符串中的数据库路径,这个数据库就是adoDemo里的数据库。我这里将它复制到
了当前目录下。
2.3 在Form_Unload事件中加入:
NetDataServer1.Down '关闭服务,释放资源…
2.4 编译该项目,得到Server.exe
这样,服务器端就构建完成了,不错,就是这么的简单。
(详细代码见刚刚下载的netdatademo/服务器端)
第三步:更改原有单机版程序为客户端程序(只须增加两行代码):
3.1 打开原有的项目,将目录下的cs.mdb移动到刚刚建立的服务器端的目录下。是的,客户端不需要数据库,
因为数据库存在服务器端。
3.2 第一步–>>> 注释或删除掉原有ADO本地连接代码
'Public DB As New Connection 'ado对象中的连接对象
该代码在Form1的第一行
3.3 第二步–>>> 在Form_load事件中,注释或删除掉原有ADO本地连接的代码
'DB.CursorLocation = adUseClient '设置数据库为本地数据库
'DB.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=cs.mdb;"
3.4 第三步–>>> 在Form_load中,增加一行代码:
Db.Start "127.0.0.1", "8888"
启动客户端,指定服务器的ip和端口,为了便于测试这里设置的是本机ip
实际应用中需将服务器端运行在远程服务器上,这里就要填远程服务器的域名或ip了。
注意:这行代码需增加到 Call Fillfg 过程之前
3.5 第四步–>>> 在Form_Unload事件中,注释或删除原有的ADO关闭本地连接的代码:
'DB.Close '注释掉原有ADO本地连接代码
然后增加第二行代码:
Db.Down '关闭客户端控件…
注意:这行代码一定要加上,不释放资源会影响客户端性能的。
3.6 第五步—>>>最重要的一步!那就是加入NetData控件,并且将NetDataClient放到form1上,将它的name改名为DB
注意:为了兼容旧有的代码一定要将NetDataClient控件名改为DB
3.7 编译该项目,得到Client.exe
至此,单机版向网络版的升级就大功告成了。先运行server.exe,再运行3个client.exe,测试一下~
速度是不是很快。如果你有自己的internet服务器,可以将数据库和server.exe复制到服务器上,在服务器上运行。
(别忘了在服务器端注册NetData控件)。client.exe可以在多个客户端运行。这样基于vb6+access的c/s架构应用就搭建完毕了。
基于mssql的应用也可用此方法升级,优点就是用netdata替代ado直连mssql的方式,会带来巨大的性能提升。因为ado直连远程
mssql实在是太慢了,查询量稍大就会超时机器不稳定,使用netdata就从根本上解决了这个问题。
本文只是介绍了netdata的一部分简单的应用,如:事务、存储过程、服务器端处理业务逻辑等一些实用性的东西没有探讨,
netdata不仅能胜任,而且十分高效。更多的netdata功能等待您的发掘~
ps: NetData是我在实际工作中提炼出来的,基于Winsock,ado和xml技术的vb6用户控件。此控件为共享软件,大家可无限制的使用于
非商业性应用中。有任何好的建议或对此控件的疑问,请联系我QQ: 170836023
很好 收藏了
收藏了!
不错!
哦~
同志们
顶啊……….!
好东西
收藏起来以后可能有用
谢谢
下载收藏了
如果我没有自己的服务器.只是网上一些免费的虚拟服务器又怎么办呢?我不可能运行SERVICE.EXE呀?那不是没用?
看看
恩,我要试一下
对,没用,这个东西相当于数据库访问中间件,这个东西也就c/s方式简单移植到互联网上可以,如果你本身就是b/s结构,这东西对你没啥用,当你想到用他的时候,你早就管理着自己能摸到的n台服务器了。
收藏了!
如果服务器端功能在强大点就好了,比如能实时监控从客户端传上来的数据,记录错误的SQL、来源IP、客户端唯一标示等等就完美了。
还不清楚这个服务端稳定不稳定。
服务器端和客户端同一个机器上很好用
但怎么把客户端移到 别的机器上很慢呀
服务器端代码
Option Explicit
Private Sub Form_Load()
NetDataServer1.Start "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "Northwind.mdb;", "8888"
End Sub
Private Sub Form_Unload(Cancel As Integer)
NetDataServer1.Down
End Sub
客户端代码
Option Explicit
Private Sub Command1_Click()
fg.Clear
Dim strSql As String
strSql = "select * from Products"
Set fg.DataSource = NetDataClient1.Execute(strSql)
MsgBox "ok", , "提示"
End Sub
Private Sub Form_Load()
NetDataClient1.Start "192.168.0.20", 8888
End Sub
Private Sub Form_Unload(Cancel As Integer)
NetDataClient1.Down
End Sub
记录集才91条记录啊
控件是以前在vbgood下的
当时不知道怎么用 就放在哪里
今天无意看到这个帖子
就试验了一下
如果用ADODC连接怎么改?