我有一个通过 DSN 连接到 Oracle 数据库的应用程序。如果最初的连接尝试失败,那么我确保他们的 DSN 存在。如果它不存在,那么我使用SQLConfigDataSource命令创建它。
该命令需要驱动程序名称作为其参数之一。在我的机器上,我有 11g 驱动程序,所以以下工作:
const
cDriver = 'Oracle in OraDb11g_home1' + #0;
var
strAttr: string;
begin
strAttr := 'DSN=' + DSNName + #0 +
'SERVER=' + TNSName + #0;
SQLConfigDataSource(0,ODBC_ADD_SYS_DSN,PChar(cDriver),PChar(strAttr));
end;
但是客户端机器可能有不同版本的 Oracle,或者他们的 oracle home 的不同名称。如何判断在任意机器上使用哪个驱动程序?
我正在使用 Delphi,但这并不重要,因为无论如何这只是一个 API 调用。