VB5.0中远程数据库的访问
在VB5.0中,可以使用Microsoft Jet数据库引擎和DAO(数据访问对象)来创建功能强大的客户机/服务器应用程序。对远程数据库的访问是开发这类应用的关键环节。本文将介绍在VB5.0中通过Miscrosoft Jet数据库引擎用DAO访问远程数据库的方法。
用DAO访问远程数据库可以分三步实现,即数据连接、数据处理和断开连接。下面主要介绍数据连接和数据处理的具体操作。
一.数据连接
DAO通常通过链接远程表来连接数据。这样,虽然数据驻留在远程数据源上,但是本地的Microsoft Jet数据库可以存储与远程数据的永久连接,同时缓存链接表的结构信息,这样下次访问表时,就不需要再从服务器上检索结构信息,从而加快连接速度。一旦表被链接,该链接将保持在每个会话中,直到连接断开。链接表的具体操作是:
使用OpenDatabase方法打开将包含链接的本地Microsoft Jet数据库。
使用CreateTableDef方法在数据库中创建新的TableDef对象。
将TableDef对象的Connect属性设置为合法的连接字符串,该字符串标识要访问的远程数据库的类型、数据文件的路径以及远程数据源的用户名和密码。
将TableDef对象的SourceTableName属性设置为远程数据库中要访问的表的名称。
将TableDef对象添加到TableDefs集合中。
链接远程表的过程如下:
public Sub LinkTable(strDB As String,strRoDB As String,_
strCn As String,strTdf As String,linkTdfName As String)
Dim link TDF As New TableDef
Set DBS = open database(strDB)
link TDF。name = linkTdfName
100
Temp = ucase(link TDF . name)
for I = 0 todbs . table defs . count-1
if ucase(DBS . table defs(I)。name) = temptablethen
如果msgbox (linktdfname+"已经存在。,_
VB question+vbYesNo)= vbYes Then
DBS。删除linkTdf。name
Exit For
Else:MsgBox "重新输入新表名"
linkTdfName = InputBox("新表名")
goto 100
end if
end if
next I
Set link TDF = DBS . create tabledef(linkTdfName)' link远程表
linkTdf。connect = ";database=" + strCn
linkTdf。source tablename = str TDF
DBS。TableDefs . Append link TDF
End Sub
上述过程用于连接远程表。它有五个参数,其中strRoDB是要访问的远程数据库的名称(包括路径)。StrTdf是此数据库中的表名;StrDB是要链接的本地数据库(包括路径);LinkTdfName是本地数据库的新表名,用于建立远程表的链接;StrCn是指定连接信息的字符串。需要注意的是,除了访问远程Microsoft Jet数据库时,连接字符串应该以分号(;),指定连接信息的字符串必须以被访问的远程数据库的类型开头。DAO可以访问三种类型的远程数据源:
Microsoft Jet数据源,如Access数据。
IISAM(可安装索引顺序存取法)格式数据源,如FoxPro、Paradox和dBASE数据。
ODBC数据源,如SQL Server数据和Oracle数据。
例如,让网络服务器命名为server,与目录C:\Sales共享FoxPro 3.0数据库。连接字符串应该是
strCn = " FoxPro3.0数据库= \ \服务器\ c $ \销售\区域1 "
另外,当DAO通过微软Jet数据库引擎访问远程数据时,也可以使用OpenDatabase方法直接打开远程表。与远程数据源建立连接所需的信息没有存储在本地数据库中。如果通过链接访问数据,则不必在每次会话开始时提供连接信息,从而提高了效率。
二。数据处理
建立数据连接后,可以用OpenRecordset方法打开一个记录集,用DBGrid控件和Data控件方便地浏览整个记录集。如果使用Table-type记录一个对象,它对应于一个实际的数据库表。在多用户环境中,其他用户对数据的修改将立即反映在表中。如果使用动态集类型记录一个对象,它可以对应于表中的所有记录或查询结果,并且记录集中的记录可以更新。如果使用快照类型来记录对象,它可以对应于表或查询结果中的所有记录,但不能添加、删除或修改记录。此外,可以建立其他类型的记录对象,例如仅ForwardOnly类型的记录对象和动态类型的记录对象。
以下是打开动态集记录对象并显示记录的过程:
public Sub rst _ display(strDB As String,strRst As String,str Form As Form)
Set DBS = open database(strDB)
Set rst = DBS。OpenRecordset(strRst,dbOpenDynaset)
strForm!数据1。数据库名= dbs。Name
strForm!数据1。记录源= rst。Name
strForm!数据1。刷新
strForm!DBGrid1。重新绑定
End Sub
上述过程有三个参数,其中strDB用于指定本地数据库名称(包括路径),linkTdfName是本地数据库中新创建的链接远程表的名称,strForm是网格控件和数据控件所在表单的名称。调用此过程以基于新表构建动态集类型的record对象,并浏览网格中的每条记录。
可以通过关闭应用程序或设置连接超时来断开连接。注意:如果Close方法用于数据库对象,连接实际上不会被取消,因为连接被缓存在Miscrosoft Jet数据库引擎
中
0条评论