DSNを介してOracleデータベースに接続するアプリケーションがあります。最初の接続試行が失敗した場合は、DSNが存在することを確認します。存在しない場合は、SQLConfigDataSourceコマンドを使用して作成します。
このコマンドでは、引数の1つとしてドライバー名が必要です。私のマシンには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ホームの名前が異なる場合があります。任意のマシンで使用するドライバーをどのように判断できますか?
私はDelphiを使用していますが、これはとにかく単なるAPI呼び出しであるため、それほど重要ではありません。