为 RDO 提供连接字符串

为了告诉 ODBC 驱动程序管理器要使用什么驱动程序,并告诉选定的驱动程序使用什么数据源,代码必须以连接字符串或 RemoteData 控件属性设置的形式提供若干参数。在绝大多数情况下,连接字符串用于将 RDO 指定到特定的服务器、数据库及其用户。

连接字符串中包括一系列的参数,互相之间用分号隔开,这些参数由 ODBC 接口定义,也包括 ODBC 驱动程序本身。就是说,所有的 ODBC 驱动程序都有特定的参数要求,因此必须参阅驱动程序所包含的文档以获取特定信息。该连接字符串将和所关联的 rdoEnvironment 对象的 hEnv 一道传递到 ODBC API 的 SQLDriverConnect 函数。

注意   如果要转换已有的 DAO 或 ODBCDirect 代码,必须从连接字符串的开头删除 ODBC 参数。另外 LOGINTIMEOUT 参数是不支持的,必须使用 rdoEnvironment 对象的 LoginTimeout 属性代替它。

通常,连接字符串包括以下参数,但是这些参数不是绝对必需的:

ODBC 连接字符串

ODBC 连接字符串参数 参数的意义
DSN= 已注册的 ODBC 数据源名称。如果使用 DRIVER 关键字,则不用 DSN。
UID= 建立于服务器上的用户名。在 SQL Server 中是登录名。
PWD= 与登录名对应的密码。
DATABASE= 所请求的缺省数据库(任选项)。
SERVER= 数据源服务器的网络名称。在 Microsoft Windows NT 计算机上,"(local)" 可以作为服务器被输入。在这种情况下,可以使用 SQL Server 的本地副本。即便是非网络版本也可以。
DRIVER= 数据源驱动程序的名称。Microsoft SQL Server 使用 {SQL Server。如果使用 DSN 关键字,则不用 DRIVER。
APP= 应用程序名(任选的)。
WSID= 工作站 ID。通常,这是应用程序所在的机器的网络名称(任选)。
LANGUAGE= SQL Server 使用的国家/地区语言(任选)。

注意   以上这参数中有一些是特定于 SQL Server 的,对于 Oracle 或其它 ODBC 数据源,可能需要其它的必选参数或任选参数。

连接字符串中不需要的参数

注意,连接字符串不包括设置以下选项的参数:

选项 缺省行为
网络地址 不需要,由服务器名称来处理。
网络协议 缺省为 SQL Server 驱动程序中的命名管道。
OEMTOANSI 开关 缺省为 "Off"
使用信任连接选项 缺省为 "Off"
为预备语句产生存储过程 缺省为 "Off"

所有这些选项都属于驱动程序选项,它们都在 Windows 控制面板中的“数据源名称”对话框中设置。除非使用 DSN 来建立连接,否则必须接受每个参数的缺省值设置。

提供 User ID 和密码值

为了能够访问绝大多数的 ODBC 数据源,必须提供一个有效的用户 ID 以及相应的密码。这些值最初由系统管理员注册,但应用程序可以修改他们。通过设置 OpenConnection 或 EstablishConnection 方法的适当的提示参数,就可以很简单地提示用户输入这些值。但是,这种方法经常会导致安全性方面的问题,因为用户可以通过无数次的尝试猜出正确的用户 ID 及密码。

另一种方法是使用应用程序的特殊用户 ID 和密码。这种方法隐含了这样的假定:只有能够访问数据源或工作站的用户才能够访问应用程序。

如果选用域管理安全机制,那么必须将 OpenConnection 或EstablishConnection 方法的 connect 参数中的 UID 和 PWD 保留为空的。这种类型的安全机制将 Windows NT 登录 ID 及密码传递到数据源。这些值是在用户登录到 Windows 95 或 Windows NT 时获取的。如果系统管理员实现了集成的或混合的安全机制,那么,如果用户被授予访问数据源的权限,那么这种方法将允许她登录到数据源。例如,在前面的例子中,域管理安全机制的 connect 参数设置如下:

Conn$ = "DSN=MyRemote;UID=;PWD=;"

指定缺省数据库

与 rdoConnection 对象关联的数据库最初由 DATABASE 连接字符串参数决定。如果没有提供这个串,那么用户的缺省数据库将由服务器管理员分派,或者由 DSN 指定的。

在连接完成之后,也可以通过执行 Transact SQL (TSQL) USE database 查询来改变缺省数据库。无论在什么情况下,都必须具有访问被选定数据库的权限,否则将会引发可以捕获的错误。

例如,以下代码将缺省数据库改为 cn 连接上的 "Pubs":

cn.Execute "Use Pubs"

将连接字符串传递到 RDO 或 RemoteData 控件

一旦完成,连接字符串作为以下各项之一传递:

为了将这些信息传递到 RDO,RemoteData 控件提供若干专门属性,但是,如果连接字符串作为 RemoteData 控件的 Connect 属性传递,那么就不需要额外的属性。连接字符串提供的值的优先级高于 RemoteData 控件属性中提供的值。