VB中远程数据库的访问

VB中远程数据库的访问,第1张

VB中远程数据库的访问,第2张

用DAO访问远程数据库可以通过三个步骤实现,即数据连接、数据处理和断开连接。下面主要介绍数据连接和数据处理的具体操作。

数据连接

DAO通过链接远程表来连接数据。这样,虽然数据驻留在远程数据源上,但可以将与远程数据的永久连接存储在本地数据库中,并缓存链接表结构信息,下次访问表时无需再次从服务器检索结构信息,从而加快连接速度。一旦表被链接,该链接将保持在每个会话中,直到连接断开。链接表的具体操作是:

用OpenDatabase方法打开将包含链接的本地数据库,用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
link TDF . source tablename = str TDF
DBS . table defs . 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数据库是共享的,那么连接字符串应该是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数据库引擎中。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » VB中远程数据库的访问

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情