通过三层结构模型远程访问ACCESS数据库

原创 2002年05月17日 17:11:00

AUTHOR:jyu1221(天同)
QQ    : 19632995
MSN   : jyu1108@hotmail.com
EMAIL : jyu1221@163.net

    大家都知道,如果把ACCESS数据库直接放在服务器上,客户端通过文件访问方式来存取数据,这样效率就太低了。
为了解决这个问题,现通过三层结构模型的方式来实现ACCESS的数据库的访问。这里的ACCESS数据库也可以换成任何
一种关系性数据库,具体结构如下:

   客户程序  |                         中间层                                           |        数据库
             |                                                                          |
                                      TCP/IP
应用程序 <--> RAccessClient <----------------------->RAccessService <-----ADO,RDO,DAO -----> ACCESS
               客户端接口                                服务程序                            
             |                                                     |
             |                                                     |
             |                                                     |
             |                                                     |
             |--------------在原来的基础上加了一层---------------- |


    客户端接口采用VB中的类来实现,程序中使用了3个类,CConnection, CRecordset, CTcpIp,其中CTcpIp是关于访问网络方面的,与用户基本上没有直接关系,和用户有关的是CConnection,CRecordset这2个类,它们分别相当于ADO中ADODB.Connection和ADODB.Recordset。有了这2个接口类,就可以用来实现大部分的数据库操作,具体用法如下:

1.定义对象
Dim conn As New CConnection                 'ADODB.Connection
Dim rs   As New CRecordset                  'ADODB.Recordset


2.打开服务器端数据库
Dim bConn As Boolean
bConn = conn.OpenConnection("192.168.1.155", "DSN=testmdb;DRIVER={Microsoft Access Driver (*.mdb)};UID=admin;PWD=;")
If Not bConn Then
    MsgBox conn.GetLastError()
    Set conn = Nothing
    Exit sub
End If


3.1.打开服务器上的记录集,并获取数据
Set rs = conn.OpenResultset("SELECT * FROM zdxx")
If rs Is Nothing Then
    MsgBox "记录集合打开错误!"
    Exit Sub
End If

'得到总的字段数
nFieldsCound = rs.GetFieldsCount()

Do Until rs.EOF
    sField1 = rs.GetFieldValueByIndex(0)           ’第一个字段的下标从0开始
    sField2 = rs.GetFieldValueByIndex(1)
    sField3 = rs.GetFieldValueByIndex(2)
    Debug.Print sField1, sField2, sField3
    rs.MoveNext
Loop
rs.CloseRecordset
set rs = nothing


3.2.更新数据库
Dim nRowAffected As Long
dim strSQL as String
strSQL = "INSERT  into zdxx(zdxx,lkd,tabstop) values('测试内容','120','1')"
'可以是INSERT,UPDATE,DELETE中的任何一种
bOK = conn.Execute(strSQL, nRowAffected)
If (Not bOK) Then
    MsgBox conn.GetLastError
Else
    MsgBox "更新记录数:" & nRowAffected
End If


4.关闭对象
Set rs = Nothing
Set conn = Nothing


    不知道大家看到没有,以上客户端的访问和ADO,RDO,等访问接口差不多。都是比较类似的,如果你会使用ADO,RDO等来访问数据库,则你可以很方便的把它们转变为此接口来实现。可以把你的单机版的ACCESS应用程序,升级为服务器版的ACCESS数据库应用程序。
    注意:本接口不支持控件的绑定方式来获取数据,更新数据,除了以上讲的,暂不支持其它的数据库接口,此接口只能是以纯代码方式来访问服务器上的ACCESS。
       服务器端的程序已经采用VC++编好,需要的读者可以和我联系。
       

                                                                                                                 2002.05.17

三层架构:表示层——业务逻辑层——数据访问层

三层架构:表示层——业务逻辑层——数据访问层 1.什么是三层架构     所谓的三层开发就是将系统的整个业务应用划分为表示层——业务逻辑层——数据访问层,这样有利于系统的开发、维护、部...
  • Sayesan
  • Sayesan
  • 2015年08月12日 13:35
  • 9355

三层架构(我的理解及详细分析)

三层架构已经学了一段时间,一直想做一个比较完整、比较完美的总结。但是左思右想,不知道如何下笔。都说万事开头难嘛,今天整理了一下凌乱的思路,哎,还是没整理好,想到哪就说到哪吧。   初学者很不理解: 1...
  • hanxuemin12345
  • hanxuemin12345
  • 2013年01月26日 17:13
  • 105728

基于WCF 的远程数据库服务访问技术

原文出处:http://www.lw80.cn/shuji/jsjlw/13588Htm.Htm 摘要:本文介绍了使用WCF 建立和运行面向服务(SOA)的数据库服务的系统结构和技术要素,分析了WC...
  • chelen_jak
  • chelen_jak
  • 2013年01月20日 11:06
  • 7495

mORMot 让Access的数据库可以远程访问的

mORMot中提供了TOleDBJetConnectionProperties类来处理Access的mdb数据库的访问,自带线程池。 通过TSQLDBServerHttpApi类,我们可以把这个TO...
  • shuiying
  • shuiying
  • 2017年01月18日 14:28
  • 635

远程访问Access数据库

远程访问Access数据库
  • TaoYuanKuangDao
  • TaoYuanKuangDao
  • 2017年05月05日 10:57
  • 982

使用midas访问远程access数据库_delphi教程

使用MIDAS访问远程Access数据库 Allen Tao(http://blog.csdn.net/allentao/) 2005-5-3 本文源...
  • delphi308
  • delphi308
  • 2014年03月17日 21:37
  • 879

vs中数据库访问类 三层结构数据访问层

  • 2008年12月11日 17:24
  • 8KB
  • 下载

使用MIDAS访问远程Access数据库

  • 2007年10月31日 10:16
  • 823KB
  • 下载

多用户远程访问Access数据库--通讯录示例(VB+ASP+ACCE)

  • 2013年06月24日 16:31
  • 1.78MB
  • 下载

远程访问ACCESS数据库

  • 2006年03月16日 00:00
  • 81KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:通过三层结构模型远程访问ACCESS数据库
举报原因:
原因补充:

(最多只允许输入30个字)