特定于驱动程序的连接信息
SQLConnect 假定数据源名称、用户 ID 和密码足以连接到数据源,并且所有其他连接信息都可以存储在系统上。 情况通常并非如此。 例如,驱动程序可能需要一个用户 ID 和密码才能登录到服务器,需要另一个用户 ID 和密码才能登录到 DBMS。 由于 SQLConnect 接受单个用户 ID 和密码,这意味着如果使用 SQLConnect,则必须使用系统上的数据源信息来存储其他用户 ID 和密码。 这是潜在的安全漏洞,应予以避免,除非加密密码。
SQLDriverConnect 允许驱动程序在连接字符串的关键字值对中定义任意数量的连接信息。 例如,假设驱动程序需要数据源名称、服务器的用户 ID 和密码,以及 DBMS 的用户 ID 和密码。 始终使用 XYZ 公司数据源的自定义程序可能会提示用户输入 ID 和密码,并生成以下一组关键字值对或连接字符串以传递给 SQLDriverConnect:
注意
如果要连接到支持 Windows 身份验证的数据源提供程序,则应指定 Trusted_Connection=yes
,而不是连接字符串中的用户 ID 和密码信息。
DSN={MyDataSourceName};UID={MyUserID};PWD={MyServerPassword};UIDDBMS={MyDBMSUserID};PWDDBMS={MyDBMSUserPassword};
DSN(数据源名称)关键字为数据源命名,UID 和 PWD 关键字指定服务器的用户 ID 和密码,UIDDBMS 和 PWDDBMS 关键字指定 DBMS 的用户 ID 和密码。 请注意,最后一个分号是可选的。 SQLDriverConnect 分析此字符串;使用 XYZ 公司数据源名称从系统中检索其他连接信息,例如服务器地址;并使用指定的用户 ID 和密码登录到服务器和 DBMS。
SQLDriverConnect 中的关键字值对必须遵循某些语法规则。 关键字及其值不应包含 []{}(),;?*=!@ 字符。 DSN 关键字的值不能仅包含空白,不应包含前导空白。 由于注册表语法,关键字和数据源名称不能包含反斜杠 (\) 字符。 关键字值对中的等号周围不允许出现空格。
在对 SQLDriverConnect 的调用中可以使用 FILEDSN 关键字来指定包含数据源信息的文件的名称(请参阅本部分后面的使用文件数据源进行连接)。 SAVEFILE 关键字可用于指定 .dsn 文件的名称,其中将保存对 SQLDriverConnect 的调用成功连接的关键字值对。 有关文件数据源的详细信息,请参阅 SQLDriverConnect 函数描述。