1. Получить версию драйвера
Вы можете получить версию драйвера в порядковой форме с помощью DriverVersion или в виде строки (которая может включать также описание драйвера) с помощью DRIVER_VER. Запрошенный SQL_DRIVER_VER тип информации в ODBC API описан следующим образом:
SQL_DRIVER_VER (ODBC 1.0)
Строка символов с версией драйвера и, необязательно, описанием драйвера. Как минимум, версия имеет форму ##.##.####, где первые две цифры — основная версия, следующие две цифры — дополнительная версия, а последние четыре цифры — версия выпуска.
С FireDAC вы можете сделать это следующим образом:
uses
FireDAC.Phys.ODBCWrapper;
procedure TForm1.Button1Click(Sender: TObject);
var
DriverVerStr: string;
DriverVerInt: TFDVersion;
ODBCConnection: TODBCConnection;
begin
ODBCConnection := TObject(FDConnection.CliObj) as TODBCConnection;
DriverVerStr := ODBCConnection.DRIVER_VER;
DriverVerInt := ODBCConnection.DriverVersion;
Memo.Lines.Add(Format('DriverVerStr: %s', [DriverVerStr]));
Memo.Lines.Add(Format('DriverVerInt: %d', [DriverVerInt]));
end;
2. Получите версию ODBC, которую поддерживает драйвер.
Чтобы получить версию ODBC, поддерживаемую используемым драйвером, вы можете использовать < strong>DriverODBCVersion для получения порядкового значения или DRIVER_ODBC_VER, чтобы получить строковое значение. Запрошено SQL_DRIVER_ODBC_VER< /strong> информация о типе данных описывается так:
SQL_DRIVER_ODBC_VER (ODBC 2.0)
Строка символов с версией ODBC, поддерживаемой драйвером. Версия имеет вид ##.##, где первые две цифры — основная версия, а следующие две цифры — дополнительная версия. SQL_SPEC_MAJOR и SQL_SPEC_MINOR определяют основной и дополнительный номера версии. Для версии ODBC, описанной в данном руководстве, это 3 и 0, и драйвер должен вернуть «03.00».
С FireDAC вы можете сделать это следующим образом:
uses
FireDAC.Phys.ODBCWrapper;
procedure TForm1.Button1Click(Sender: TObject);
var
ODBCVerStr: string;
ODBCVerInt: TFDVersion;
ODBCConnection: TODBCConnection;
begin
ODBCConnection := TObject(FDConnection.CliObj) as TODBCConnection;
ODBCVerStr := ODBCConnection.DRIVER_ODBC_VER;
ODBCVerInt := ODBCConnection.DriverODBCVersion;
Memo.Lines.Add(Format('ODBCVerStr: %s', [ODBCVerStr]));
Memo.Lines.Add(Format('ODBCVerInt: %d', [ODBCVerInt]));
end;
3. Получить версию продукта СУБД, к которой обращается драйвер
Доступную версию продукта СУБД можно получить с помощью DBMS_VER собственность. ODBC API описывает запрошенный < strong>SQL_DBMS_VER тип информации:
SQL_DBMS_VER (ODBC 1.0)
Строка символов, указывающая версию продукта СУБД, к которому обращается драйвер. Версия имеет форму ##.##.####, где первые две цифры — основная версия, следующие две цифры — дополнительная версия, а последние четыре цифры — версия выпуска. Драйвер должен отображать версию продукта СУБД в этой форме, но может также добавлять версию продукта СУБД. Например, «04.01.0000 руб. 4.1».
С FireDAC вы можете получить это таким образом (нет свойства, возвращающего проанализированный порядковый номер версии, поэтому давайте попробуем выполнить синтаксический анализ самостоятельно):
uses
FireDAC.Stan.Util, FireDAC.Phys.ODBCWrapper;
procedure TForm1.Button1Click(Sender: TObject);
var
DBMSVerStr: string;
DBMSVerInt: TFDVersion;
ODBCConnection: TODBCConnection;
begin
ODBCConnection := TObject(FDConnection.CliObj) as TODBCConnection;
DBMSVerStr := ODBCConnection.DBMS_VER;
DBMSVerInt := FDVerStr2Int(DBMSVerStr);
Memo.Lines.Add(Format('DBMSVerStr: %s', [DBMSVerStr]));
Memo.Lines.Add(Format('DBMSVerInt: %d', [DBMSVerInt]));
end;
4. Получите информацию об унифицированной версии FireDAC
FireDAC предоставляет ClientVersion и ServerVersion свойства, доступные через ConnectionMetaDataIntf свойство интерфейса объекта соединения.
Для драйверов ODBC ClientVersion Свойство a> возвращает версию драйвера (описано в разделе 1 здесь), если драйвер не является одноуровневым драйвером, в противном случае — версию продукта СУБД (описано в разделе 3). ServerVersion возвращает всегда версия продукта СУБД (описана в разделе 3 здесь) для драйверов ODBC.
Например:
procedure TForm1.Button1Click(Sender: TObject);
var
Metadata: IFDPhysConnectionMetadata;
begin
Metadata := FDConnection.ConnectionMetaDataIntf;
try
Memo.Lines.Add(Format('ClientVersion: %d', [Metadata.ClientVersion]));
Memo.Lines.Add(Format('ServerVersion: %d', [Metadata.ServerVersion]));
finally
Metadata := nil;
end;
end;
person
Victoria
schedule
26.06.2017