Использование Delphi 7 с объектами ADO, возможно ли определить драйвер базы данных ODBC из объекта TADOConnection? Таким образом, определяет, является ли MS-Access или SQL Server или Oracle и т.д.Определить драйвер базы данных ODBC из объекта TADOConnection?
Программа подключается к базе данных, используя только имя источника данных ODBC, и я хочу, чтобы определить, является ли эта база данных базу данных MS-Access или SQL Server. Я хочу сделать это, потому что MS-Access и SQL Server используют разные имена функций SQL для приведения целого числа в строку.
Приложение создает строку SQL, которая извлекает VERSION некоторых объектов конфигурации. Она работает на сервере SQL с помощью cast()
, но я также хочу, чтобы поддерживать MS-Access, которая использует CStr()
:
SELECT NAME + '_' + CAST(VERSION as varchar) as OBJECT_NAME FROM ANALYSIS // SQL Server
SELECT NAME + '_' + CStr(VERSION) as OBJECT_NAME FROM ANALYSIS // MS-Access
Я попытался, глядя на TADOConnection.Provider но в обоих случаях MSDASQL.1
.
if (myqry.Connection.Provider = 'MSDASQL.1') then
strSQL := strSQL + 'cast(' + myfieldname + ' as varchar)' // always goes here..
else
strSQL := strSQL + 'CStr(' + myfieldname + ')'; // ..never to here
Я просмотрел все свойства TADOConnection, но я начинаю подозревать, что это невозможно. Есть идеи, как это решить?