У меня есть приложение, которое подключается через 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 или другое имя для своего дома оракула. Как я могу сказать, какой драйвер использовать на произвольной машине?
Я использую Delphi, но это не должно иметь большого значения, так как в любом случае это всего лишь вызов API.