发信人: r_hayes(Hayes)
整理人: winsy(2003-09-02 09:03:44), 站内信件
|
在VB中,用microsoft jet数据库引擎和数据访问对象DAO(data access object)可以创建功能强大的客户/服务器应用程序。对远程数据库的访问是开发这类应用程序的关键环节,本文将介绍在VB中用DAO通过miscrosoft jet数据库引擎访问远程数据库的方法。
用DAO访问远程数据库大体上可以通过三步来实现,即数据连接、数据处理和断开连接。下面主要介绍数据连接和数据处理的具体操作。
一、数据连接
DAO一般通过链接远程表的方式来进行数据连接。这样,数据虽然驻留在远程数据源上,但在本地的microsoftjet数据库中可以存储与远程数据的永久性连接,同时缓存链接的表结构信息,从而在下一次访问该表时,不用再次从服务器中检索这些结构信息,加快了连接速度。一旦链接了一个表,该链接便会保留在各会话期间,直到连接断开。链接远程表的具体操作是:
用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 linktdf as new tabledef
set dbs = opendatabase(strdb)
linktdf.name = linktdfname
100
temptable = ucase(linktdf.name)
for i = 0 to dbs.tabledefs.count - 1
if ucase(dbs.tabledefs(i).name) = temptable then
if msgbox(linktdfname + " 已 存 在, 是 否 删 除 ?", _
vbquestion + vbyesno) = vbyes then
dbs.tabledefs.delete linktdf.name
exit for
else: msgbox " 重 新 输 入 新 表 名"
linktdfname = inputbox(" 新 表 名")
goto 100
end if
end if
next i
set linktdf = dbs.createtabledef(linktdfname) ’ 链 接 远 程 表
linktdf.connect = ";database=" + strcn
linktdf.sourcetablename = strtdf
dbs.tabledefs.append linktdf
end sub
上述过程用来实现远程表的连接,它有5个参数,其中strrodb是要访问的远程数据库名(包括路径);strtdf是该数据库中的表名;strdb是要链接的本地数据库(包括路径);linktdfname是本地数据库的一个新表名,用来建立远程表的链接;strcn是指定连接信息的字符串。需要特别注意的是,除了在访问远程microsoft jet数据库时,连接字符串要以分号(;)开头外,指定连接信息的字符串都必须以所访问的远程数据库类型开头。DAO可以访问的远程数据源有以下三类:
.microsoft jet数据源,如:access数据。
.iisam(可安装的索引化顺序访问方法)格式数据源,如:foxpro、paradox、dbase数据。
.odbc数据源,如:sqlserver数据、oracle数据。
例如:设网络服务器名为server,共享目录为c:\sales的foxpro3.0数据库,连接字符串应为
strcn="foxpro3.0;database=\\server\c$\sales\region1"
此外,DAO通过microsoft jet数据库引擎访问远程数据时,还可以用opendatabase方法直接打开远程表。在本地数据库中并未存储与远程数据源建立连接所需要的信息。如果使用链接方式访问数据,则不必在每次会话开始时提供连接信息,从而可以提高效率。
----
灌灌
灌灌
灌灌
灌灌 灌灌
灌灌 灌灌灌
灌灌灌灌灌灌灌 灌灌 灌灌灌
灌灌灌灌灌灌灌灌灌灌灌灌
灌灌灌灌灌灌
灌灌灌灌灌灌灌
灌灌 灌灌 灌灌
灌灌 灌灌 灌灌
灌灌 灌灌 灌灌
灌灌 灌灌 灌灌灌
灌灌 灌灌 灌灌灌灌
灌灌 灌灌 灌灌灌灌灌
灌灌 灌灌 灌灌灌灌灌
灌灌 灌灌 灌灌
灌灌灌灌
灌灌灌
灌 |
|