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

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

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 2
    评论
vc++数据库开发资源包 都是过时的技术。 我自己学习用的。 ------------------------- ADO270.CHI ADO270.CHM ADOSQL.CHI ADOSQL.CHM COM.CHM DBLIBC.CHI DBLIBC.CHM DBLIBC.chw ODBCSQL.CHM ODECORE.CHI OLEDB.CHI OLEDB.CHM OLEDBSQL.CHI OLEDBSQL.CHM ─INCLUDE DB2CONST.H DBMCONST.H DTMCONST.H DTSCONST.H DTSFFILE.H DTSPKG.H DTSPUMP.H EQMCONST.H GENCONST.H IFXCONST.H MDSCONST.H MSDADC.H MSDAGUID.H MSDASC.H MSDASQL.H OCLCONST.H ODBCINST.H ODBCOR_G.BAS ODBCSS.H ODBEXT_G.BAS OLEDB.H OLEDBERR.H OLPCONST.H REPAPI.H REPAUTO.H REPENG.BAS REPERR.H REPLDIST.H REPLDSTX.C REPLERRI.C REPLERRX.H REPLINIX.C REPLMRGX.C REPTIM.H REPTIM2.H REPTIM3.H SIMCONST.H SQL.H SQLCA.H SQLCONST.H SQLDA.H SQLDB.H SQLDISTX.H SQLDMO.H SQLDMOID.H SQLEXT.H SQLFRONT.H SQLINITX.H SQLMERGX.H SQLNSDEF.H SQLNSX.H SQLOLEDB.H SQLRES.H SQLRES.IDL SQLRESID.H SQLTYPES.H SQLUCODE.H SRV.H SRVAPI.H SRVCONST.H SRVDBTYP.H SRVMISC.H SRVSTRUC.H SRVTOK.H SRVTYPES.H TFMCONST.H TRANSACT.H TXCOORD.H TXDTC.H UMLCONST.H UMXCONST.H VDI.H VDIERROR.H VDIGUID.H WN95SCM.H XACTOMSG.H XOLEHLP.H ─SAMPLES ├─ADO │ UNZIP_AD │ ├─BACKUP │ UNZIP_BA │ ├─DBLIB │ UNZIP_DB │ ├─DESKTOP │ SAMPLE.M │ SAMPLEUP │ UNZIP_DE │ ├─DTS │ UNZIP_DT │ ├─ESQLC │ UNZIP_ES │ ├─MISC │ UNZIP_MI │ ├─MSDTC │ UNZIP_MS │ ├─ODBC │ UNZIP_OD │ ├─ODS │ UNZIP_OD │ ├─OLEAUTO │ UNZIP_OL │ ├─SQLDMO │ UNZIP_SQ │ ├─SQLNS │ UNZIP_SQ │ ├─SQLREPL │ UNZIP_SQ │ ├─UTILS │ UNZIP_UT │ └─XML UNZIP_XM ─SDK MDACSDKLITE. XMLSDK.MSI ─X86LIB ADME.LIB CAW32.LIB DACDLL.LIB DTCCFG.LIB DTCCM.LIB DTCHELP.LIB DTCTRACE.LIB DTCUIC.LIB DTCUIS.LIB DTCUTIL.LIB LOGMGR.LIB MSDASC.LIB MSDTC.LIB MSDTCPRX.LIB MSDTCTM.LIB NTWDBLIB.LIB ODBC32.LIB ODBCBCP.LIB ODBCCP32.LIB OLEDB.LIB OLEDBD.LIB OPENDS60.LIB SAMPDTCR.LIB SQLAKW32.LIB SVCSRVL.LIB UTIL.LIB W95SCM.LIB XOLEHLP.LIB

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 2

打赏作者

jyu1221

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值