Как установить odbc драйвер firebird

Обновлено: 03.07.2024

Firebird (InterBase) можно использовать для систем практически любого уровня, начиная от однопользовательских настольных приложений со встраиваемой базой данных (Embed Database), до клиент-серверных приложений уровня корпорации.

Средства и технологии, используемые в статье:

Что такое OLE DB Provider?

Более детальное описание технологии OLE DB дано в статье: ODBC Firebird драйвер, ODBC InterBase или OLE DB?

Для дальнейшей работы скачайте и установите IBProvider Professional Edition.

Методы подключения к Firebird и InterBase

Параметры строки подключения для работы с Firebird, InterBase

Для формирования строки подключения в Net 2.0 появился класс OleDbConnectionStringBuilder:

Существует определенный набор свойств инициализации IBProvider-a, который необходимо установить перед выполнением соединения с БД:

СОВЕТ
Всегда включайте в параметр Location имя сервера базы данных. Это позволит обеспечить совместимость со всем версиями Firebird .

Способы хранения строк подключения

В реальных приложениях никто не прописывает строки подключения к базе данных в коде. Гораздо эффективнее использовать для этой цели либо настройки приложения (технология Settings), либо отдельный файл подключения.

  • Создайте пустой файл с расширением .udl
  • Откройте файл (Enter), появится связанный с данным расширением диалог для настройки подключения:
  • В списке OleDb провайдеров выберете IBProvider v3:
  • Задайте параметры подключения по аналогии с рисунком и нажмите кнопку «Проверить подключение»:
  • Нажмите «Ок» для записи информации о подключении в файл

Теперь для того чтобы использовать подключение, описанное udl файлом достаточно явно или через OleDbConnectionStringBuilder задать свойство File Name

В свойствах проекта выберите вкладку Settings и создайте новое свойство с именем ConnectionString и типом (Connection string):

ПРИМЕЧАНИЕ
Если нажать на кнопку “Data Links” появится уже знакомый нам диалог конфигурации Microsoft Data Link

Для того чтобы прочитать строку подключения из файла конфигурации необходимо создать экземпляр класса настроек вашего приложения:

Для облегчения написания примеров был создан класс ConnectionProvider, который инкапсулирует в себе все, описанные методы подключения.

Шифрование строки подключения. Data Protection API

Один из вариантов защитить строку подключения в своем конфигурационном файле это воспользоваться Data Protection API (DAPI) . Начиная с Windows 2000, DAPI является частью операционной системы.

Допустим, нам необходимо зашифровать данные, хранящиеся в секции connectionStrings. Для этого мы воспользуемся классом DataProtectionConfigurationProvider:

Добавим к проекту ссылку на System.Configuration.dll и используем следующий код:

ПРЕДУПРЕЖДЕНИЕ
Данных хранящиеся в секции могут быть расшифрованы только на том компьютере, на котором были зашифрованы. Таким образом, процедуру шифрования данных необходимо вызывать на компьютере конечного пользователя.

Данный пример как раз подходит для этих целей. При установке приложения мы помещаем в папку с программой ещё не зашифрованный App.Config. При первом запуске приложения данная процедура его зашифрует и, в последствии, программа будет работать уже с защищенной секцией. Можно так же вызывать процедуру шифрования во время установки приложения.

К сожалению, нет стандартных средств для защиты UDL файлов, поэтому стоит воспользоваться способом хранения защищенных строк подключения в файле конфигурации.

Команды

Команды предназначены для передачи запросов базе данных. Для Ole Db провайдеров команда реализуется классом OleDbCommand. Команда всегда выполняется для заданного открытого подключения к базе данных в контексте транзакции.

Для того чтобы выполнить запрос к базе данных необходимо выполнить следующую последовательность действий:

ExecuteScalar

ExecuteReader

Данный метод возвращает объект OleDbDataReader, которые по своему назначению очень близок объекту Recordset из классического ADO. Он использует однонаправленное ForwardOnly чтение данных, реализуя подсоединенную модель доступа. Таким образом, при его использовании необходимо наличие отрытого подключения к базе.

Навигация по строкам результирующего множества осуществляется при помощи метода Read(), который возвращает true , в случае если ещё остались строки и false в противном случае. При вызове метода команды ExecuteReader(), созданный им объект OleDbDataReader не спозиционирован на первой строке результирующего множества и для её прочтения необходимо сначала вызвать метод Read().

Наиболее удобным способом чтения данных из результирующего множества является использование метода Read() совместно с конструкцией while:

ПРИМЕЧАНИЕ
Обратите внимание что после вызова метода OleDbDataReader.Close(), подключение к базе данных будет закрыто. Это произошло потому, что я применил перегруженный метод ExecuteReader() с заданным параметром CommandBehavior.CloseConnection. По умолчанию после выполнения метода OleDbDataReader.Close() подключение к базе данных остается открытым.

ExecuteNonQuery

Метод применяется для выполнения запросов, которые возвращают количество обработанных записей, таких как insert, update, delete, а так же для выполнения хранимых процедур, результат которых помещается в OUT параметры команды:

Параметры команд

В большинстве случаев при выполнении команды требуется задать её параметры. Параметры добавляются в коллекцию Parameters. Они могут быть именованные и позиционные. Пример команды с позиционными параметрами:

Для того чтобы добавить параметр нужно воспользоваться:

  • для добавления именованного параметра и значения метод AddWithValue()
  • для добавления как именованных, так и неименованных параметров перегруженный метод Add()

Нельзя не сказать о существующих ограничениях при использовании именованных параметров совместно с OleDbCommand. В MSDN написано, что именованные параметры поддерживаются только для поставщиков данных MSSQL и Oracle, а для поставщиков данных Ole Db и ODBC поддерживаются только позиционные параметры. Использовать именованные параметры все же можно, но их добавление в коллекцию Parameters необходимо осуществлять в том же порядке, в каком они следуют в запросе. К примеру, если текст команды:

то сначала необходимо добавить параметр currency , а потом country:

Задавать значения параметров можно уже в произвольном порядке:

Существуют два способа обработки результатов хранимых процедур:

  • хранимая процедура возвращает результирующее множество
  • результат выполнения хранимой процедуры помещается в OUT параметры команды

Для первого способа используется обычная SQL-инструкция:

Результат её выполнения обрабатывается при помощи объекта OleDbDataReader:

Результат выполнения помещается в OUT параметры команды, которые предварительно необходимо создать:

В следующем примере хранимая процедура увеличивает значение генератора на единицу и возвращает полученное значение через OUT-параметр:

Доступ к массивам InterBase, Firebird

Следующий пример демонстрирует чтение и запись массива из 5 элементов:

Работа с BLOB полями в Firebird, InterBase

IBProvider поддерживает работу с двумя типами BLOB полей: содержащих текст и бинарные данные. Благодаря встроенному в IBProvider конвертеру типов, работа с BLOB полями происходит так же, как и с обычными типами данных:

СОВЕТ
В примере OleDbDataReader использован совместно с конструкцией using . Он поддерживает интерфейс IDispose и после завершения работы сам позаботится о своем закрытии, а если в метод OleDbCommand.ExecuteReader() передать значение CommandBehavior.CloseConnection , то так же будет закрыто подключение к базе данных.

В качестве еще одного примера работы с BLOB полями в Firebird (InterBase), я хочу предложить вам, ставший уже классическим, пример записи рисунка в BLOB поле.

«There is already an open DataReader associated with this Connection which must be closed first.»

Предыдущий пример работы с BLOB полями как раз и показывает применение технологии MARS. В нем демонстрируется последовательное чтение данных и их одновременное их обновление.

Таким образом, применение MARS возможно не только для MS SQL Server , как пишут во многих источниках информации, но и для других баз данных.

Использование транзакций

Автоматическое управление транзакциями в IBProvider

Любая операция с базой данных должна выполняться в контексте транзакции. В своих примерах я постоянно использовал метод OleDbConnection.BeginTransaction(), так как предпочитаю всегда явно управлять транзакциями.

IBProvider может управлять транзакциями автоматически. Для конфигурирования этого режима существуют несколько свойств инициализации, которые могут быть заданы в строке подключения:

Следующий пример демонстрирует включение режима автоматического управления транзакциями с уровнем изоляции RepeatableRead:

Уровни изоляции транзакций в Firebird, InterBase

Уровень изоляции транзакции фактически задает область видимости данных между параллельно выполняющимися транзакциями.

IBProvider поддерживает три уровня изоляции транзакций: Read Committed, Repeatable Read и Snapshot.

Вложенные транзакции в Firebird, InterBase

TransactionScope и распределенные транзакции в Net 2.0

В Net Framework 2 появилось новое пространство имен System.Transaction, которое предоставляет поддержку распределенных транзакций. IBProvider поддерживает распределенные транзакции за счет расширения COM+ Microsoft Transaction Server (MTS). Распределенные транзакции позволяют нам преодолеть границы базы данных и выполнять действия с различными БД в контексте одной распределенной транзакции. Таким образом, гарантируется, что данные у всех участников распределенной транзакции будут согласованы.

Для организации распределенных транзакций служит объект TransactionsScope. В случае если он обнаружит, что его в контексте используется несколько подключений, он будет использовать распределенную транзакцию, иначе локальную. Следующий пример иллюстрирует поведение объекта TransactionsScope:

Управление транзакциями Firebird, InterBase через SQL

Использование именованных точек сохранения

IBProvider позволяет использовать именованные точки сохранения внутри транзакций. Для задания новой точки необходимо выполнить SQL запрос:

Для того чтобы откатить или зафиксировать транзакцию до определенной точки сохранения необходимо выполнить:

В следующем примере определяется одна точка сохранения между двумя командами:

Обработка ошибок в Visual Studio

  • Код ошибки OleDb
  • Коллекцию ошибок OleDbError

В примере умышленно пропущены обязательные параметры строки подключения User ID и Password. В результате выполнения данного кода будет сгенерировано Ole Db исключение. В коллекции ошибок будет содержаться два объекта OleDbError. На экран будет выведено следующее:

Событие InfoMessage

Решение было оформлено в виде компонента, который поставляется в виде исходных текстов вместе с примерами к статье. Он реализован в виде словаря OleDbProperties индексированного по названию свойства, в котором присуствует фабричный метод GetPropertiesFor():

Фабричный метод обращается к поставщикам свойств унаследованных от PropertyProviderBase. В компоненте реализовано три поставщика для объектов OleDbCommand, OleDbConnection и OleDbDataReader:

Каждый из поставщиков возвращает свой набор свойств, соответствующий группам Ole Db:

  • поставщик для OleDbConnection возвращает свойства из наборов Data Source Information, Data Source и Initialization
  • поставщик для OleDbCommand и поставщик для OleDbDataReader возвращают свойства из группы Rowset с тем различием, что для команды можно установить свойства, а для OleDbDataReader-а их можно только читать.
    • Полный список свойств группы Data Source Information
    • Список свойств группы Initialization (задаются в строке подключения к Firebird, InterBase.
    • Свойства набора рядов группы Rowset

    Пул подключений

    Флаг Знач. OLE DB сервисы
    DBPROPVAL_OS_ENABLEALL -1 Используются все сервисы
    DBPROPVAL_OS_RESOURCEPOOLING 1 Ресурсы должны помещаться в пул
    DBPROPVAL_OS_TXNENLISTMENT 2 При необходимости сессии должны быть автоматически подключены к глобальной транзакции
    DBPROPVAL_OS_AGR_AFTERSESSION 8 Поддержка операций за пределами сессии
    DBPROPVAL_OS_CLIENTCURSOR 4 Поддержка клиентских курсоров на уровне OLE DB Services, если их не поддерживает управляемый провайдер
    DBPROPVAL_OS_DISABLEALL 0 Все сервисы отключены

    В примерах к статье класс OleDbServicesValues содержит константы для всех этих флагов. Для комбинации флагов можно использовать операцию побитового исключения ( &

    ) констант невостребованных сервисов из константы DBPROPVAL_OS_ENABLEALL.

    Следующий пример тестирует производительность при использовании различных Ole Db сервисов:

    OleDbServicesValues.AggregationAfterSession (параметр “OLE DB Services = -13 ”).

    Чуть медленнее будет работать при использовании всех Ole Db сервисов. И наконец производительность значительно падает (примерно в 20 раз) при полностью выключенных сервисах.

    Отсоединенная модель. DataSet

    Заполнение объекта DataSet

    Класс DataSet служит для хранения данных, загруженных из базы, в памяти. Фактически он представляет собой набор таблиц связанных отношениями и в идеальном случае копирует структуру исходной базы данных.

    Он позволяет существенно сократить количество обращений к базе данных. Это особенно критично для WEB-приложений, для которых частое подключение к базе данных не является оптимальным.

    Существуют несколько способов заполнения объекта DataSet:

    DataTableReader

    Данный класс позволяет использовать объект DataTable в режиме однонаправленного ForwardOnly чтения. Он, так же как и OleDbDataReader наследуется от базового класса DBDataReader.

    Этот способ чтения таблиц DataSet может быть полезен, когда используются общие методы для отсоединенного источника данных и данных, которые формируются в подсоединенном режиме (OleDbCommand.ExecuteReader()). К примеру, такая ситуация нередкость, когда операции работы с базой данных нужно вынести в веб-сервис. В таком случае, чтобы не переписывать большое количество кода, используещего OleDbDataRead, применяют DataTableReader к данным DataSet.

    Следующий пример демонстрирует использование общего метода PrintDBDataReader() для подсоединенного и отсоединенного режимов работы:

    Передача изменений обратно в базу данных

    После того как в DataSet были внесены изменения, их необходимо передать обратно в базу. Для этого у объекта OleDbDataAdapter есть метод Update(). Прежде чем его использовать, необходимо настроить наш адаптер. В этом нам поможет класс OleDbCommandBuilder. Он позволяет сгенерировать команды для операций вставки, обновления и удаления, а так же создать соответствующую коллекцию параметров команд.

    Ниже приведен пример передачи изменений из DataSet в базу данных:

    1. ODBC/JDBC Driver for Firebird Client Applications

    fb odbc 100px

    This manual documents the official driver for connecting ODBC-aware client applications with a Firebird database, implementing the combined capabilities of dedicated wrappers for the Firebird C/C++ API functions with an ODBC-to-JDBC bridge to enable cross-platform connections in a Java VM environment.

    1.1. About the Firebird ODBC driver

    The Firebird ODBC driver supports client applications connecting to Firebird databases from Windows, FreeBSD, Solaris, and Linux. Separate kits are available for both Windows and the POSIX platforms, for use with 32-bit or 64-bit clients. On Windows, the respective dynamic OdbcFb.dll and the static OdbcFb.lib libraries are packaged in both .zip archives and executable installers. The POSIX packages come as either the binaries for x86 and amd64, respectively, both named libOdbcFb.so , or as a source code tarball. This help file is also included in the installation kits.

    1.1.1. Features Supported

    Compiling for both 32-bit and 64-bit Windows clients on the Microsoft SDK base

    Thread-safe querying and other processing

    Creating databases by means of functions SQLConfigDataSource , SQLDriverConnect , SQLExecDirect .

    Multiple simultaneous transactions per connection, with varying transaction attributes if need be. For example, one read-only transaction, one or more simultaneous read/write transactions.

    Transparent connection pooling via transaction settings

    Firebird database events returned by triggers and stored procedures

    Use of Microsoft ODBC cursors ( odbccr32.dll , odbccu32.dll )

    Firebird Services API (backup & restore, statistics, repair) by way of the function SQLConfigDataSource

    The schemas SCHEMA or OWNER for cases where a schema is required for cross-DBMS compatibility in SQL queries

    Use of the COM interface for Microsoft Distributed Transaction Coordinator (DTC)

    2. Installing the Driver

    Installation is similar for both options. You can install both the 32-bit and the 64-bit driver on the same machine if the user is going to access Firebird from multiple applications of mixed bitness. Care will be needed to ensure that each application will connect using the correct DSN for the required driver.

    2.1. Downloading the Driver

    Executable installer for use with 32-bit client applications. Use this for an initial installation.

    Executable installer for use with 64-bit client applications. Use this for an initial installation.

    Zip kit containing just the dynamic and static 32-bit libraries and documentation. This can be used to update the library of an existing installation when the driver is not active. On a 64-bit machine, the older version can be found in the folder c:\Windows\SySWOW64 and Administrator privileges will be required to overwrite it.

    Zip kit containing just the dynamic and static 64-bit libraries and documentation. This can be used to update the library of an existing installation when the driver is not active. On a 64-bit machine, the older version can be found in the folder c:\Windows\system32 and Administrator privileges will be required to overwrite it. It will not work on a 32-bit machine.

    32-bit binary for a POSIX client, gzipped

    64-bit binary for a POSIX client, gzipped

    2.2. Getting the Right Firebird Client Library

    Make sure you get the fbclient library that has the same major version number as the server it is going to connect with.

    If your ODBC DSN setup is going to need the 32-bit fbclient.dll and it is not there, you will need to download the 32-bit Windows .zip kit from the main Firebird download page, extract the 32-bit client from it and place it in the same folder as your application. An alternative is to download the 32-bit installer instead and perform a client-only install, configuring the installer to place it where you want it to be.

    The POSIX server kits always come with only the matching libfbclient.so . You will need to extract it from an .i686 kit if your POSIX client application is 32-bit.

    Have the client library in its proper place before installing the driver and configuring the DSN.

    Compatibility of the Driver with Firebird Versions

    The most current version of the ODBC/JDBC driver is expected to be compatible with any supported version of Firebird.

    2.3. Installing the Driver on Windows

    If you are doing a first-time install of the driver, or if you have uninstalled an older version, it is recommended that you use the executable installer. These instructions will assume that you are installing the 32-bit driver, but the procedure is the same for installing the 64-bit one. Under the hood, the 32-bit driver library will be installed into \windows\sysWOW64 on a 64-bit Windows. Any other install will place the driver in windows\system32 .

    Download or move the executable installer kit to the desktop. Right-click on it and select Run as Administrator.

    fb odbc installer on desktop

    Click your way through the screens until you reach the one in which you configure your preferences for the installation:

    fb odbc installer 001

    If you want or need to, you can have the driver installed in some other location than the one offered by the installer as the default. Use the Browse button to find the location where you want to have the driver installed.

    The installer will create the \Firebird_ODBC subfolder if it does not exist already.

    Lastly, the installer will display the configuration you have chosen. If you happy with it, just click Install and it is done.

    fb odbc installer 002

    2.4. Installing the Driver on Linux

    There are two prerequisites for installing the ODBC/JDBC driver on Linux:

    Firebird must be installed, initially at least, for testing the installation

    2.4.1. Unpacking the Files

    The ODBC/JDBC driver packages for Linux are gzipped tar files. After gunzip they should be processed by tar, or you can rename them to .tar.gz and use a tool such as Midnight Commander to unpack them.

    2.4.2. Building from Sources

    Building from source code (recommended), requires the development package for unixODBC. Proceed with the following steps:

    Download and unpack the Firebird driver sources

    Rename makefile.linux in .source/Builds/Gcc.lin to makefile

    Set the evironment variables FBINCDIR (Firebird include directory) and FBLIBDIR (Firebird lib directory) if necessary.

    Run make which will create the library libOdbcFb.so in a subdirectory

    It is possible to copy the library to /usr/local/lib64 or any preferred directory; or run make install to symlink the library from the unixODBC directory

    2.4.3. Installing the Binary Package

    To install from the binary package, copy libOdbcFb.so to /usr/local/lib64 , /usr/local/lib32 or any other desired destination directory, as appropriate.

    3. Firebird ODBC Configuration

    3.1. Configuring a DSN on Windows

    On a 64-bit machine, you will find two such applets:

    fb odbc system dsn 001

    For the purpose of our example, we want to pick the item ODBC Data Sources (32-bit). Obviously, if we had installed the 64-bit driver with the intention of using it for a 64-bit application, we would pick the 64-bit item from this menu instead.

    Click on the tab labelled System DSN, where you will begin setting up your DSN.

    fb odbc system dsn 002

    Figure 5. Selecting the Firebird driver for the DSN

    3.1.1. The DSN Settings

    After clicking Finish on the previous screen, you are presented with a form into which you will enter the parameters for a connection and will be able to test that they all work.

    fb odbc system dsn 003

    Data Source Name (DSN)

    Optional. Can be used to provide more details about the data source.

    REQUIRED. Full address of the database, as required for an embedded or network connection. If the connection is remote, it can be in TCP/IP or WNET format. TCP/IP is recommended. Firebird database aliases are supported. Refer to Connection Examples.

    May be required. Local path to the Firebird client library. For embedded connections to a sub-V.3 Windows server, it can point to the copy of fbembed.dll in the application directory; otherwise, point it to where you have located the bitness-compatible Firebird remote client library unless you are certain the correct library will be found automatically in a system location.

    Optional, since login credentials can be captured during connection to a Firebird database. If it is not configured, the ODBC interface will prompt for a user ID (UID or USER) at connection time.

    Optional, since login credentials can be captured during connection to a Firebird database. If it is configured, it should be the password for the supplied User ID. Otherwise, the ODBC interface will prompt for a password (PWD or PASSWORD) at connection time. Any password configured is encrypted automatically and saved in odbc.ini . Storing the password here should not be a security risk.

    Optional. If it is defined and the login is by SYSDBA, role is ignored; otherwise, the login credentials, whether stored or captured at connection, must have been granted that role prior to the login attempt.

    May be blank. Sets the default character set of the client.

    Options (set here in DSN or specify dynamically)

    Read (default write)

    Transactions are read/write by default. Check to make transactions read-only.

    Nowait (default wait)

    The transaction will wait if it encounters a lock conflict. Check to have the transaction return an error immediately upon encountering a lock conflict.

    When a transaction is set for WAIT conflict resolution, express the length of time in seconds until the lock times out and a lock conflict error is returned ( isc_lock_timeout ).

    Other optional parameters

    SQL dialect for the client to use in accessing the database. The only valid options for Firebird are 1 or 3. Note, Dialect 1 is not compatible with quoted identifiers; Dialect 3 will not accept strings delimited by double quotes.

    Causes pairs of double quotes to be treated solely as delimiters of case-sensitive object identifiers. Attempts to pass double quotes as string delimiters will be treated as errors in both dialects. Note, double-quoted strings have always been illegal in Dialect 3.

    This option affects the way the client treats the property SQL_IDENTIFIER_CASE . SQL_IC_UPPER (value=1) is the default, treating all identifiers as stored in upper case characters. Check to select SQL_IC_SENSITIVE (value=3) to have the interface treat all identifiers that are not in all upper case as though they were case-sensitive. This is not recommended! For an explanation, see Note (1) below.

    Default is NO . The effect of checking this is to change the setting to YES . In that case, every identifier in every statement will be double-quoted automatically. The need to set this on would be highly unusual and would need to be well understood to avoid non-stop errors.

    Drop-down list offering three options for treatment of SQL schemas, which Firebird does not support. Normally, leave this at the default setting Set null field SCHEMA. For some details, see Note (2) below.

    Часто приходится слышать о том, что многие не понимают различия между технологиями ODBC и OLE DB. Иногда между ними даже ставят знак равенства. В статье рассматривается сходство этих технологий и их различие.

    На примере баз данных Firebird и InterBase даны рекомендации, которые помогут вам при выборе средства доступа.

    Преимущества использования стандартных интерфейсов

      Можно выделить следующие преимущества такого подхода:
    • Независимость клиентского приложения от деталей реализации источника данных.
    • Легкий переход между версиями серверов баз данных.
    • Возможность работы приложения с несколькими серверами баз данных.
    • Поддержка со стороны большого числа средств разработки.

    Идея состоит в том, что разработчикам легче реализовать один стандартный интерфейс, чем поддерживать множество базы данных с различным API.

    Что такое ODBC драйвер?

    ODBC драйвера были одной из первых попыток Microsoft стандартизировать механизмы доступа к данным.

    ODBC драйвер представлял собой реализацию ODBC API на языке C. Вызовы ODBC API транслировались на API конкретной базы данных.

    Источники данных ODBC

    OLE DB, в отличие от ODBC, является объектно-ориентированным API, основанным на COM-интерфейсах.

    OLE DB провайдеры могут работать не только с реляционными базами данных, но и с любой другой информацией которую можно представить в табличном виде. Например: OLE DB провайдер для служб каталогов или Jet OLE DB провайдер, позволяющий извлекать данные из Excel и Outlook.

    В OLE DB можно работать и с ODBC драйвером при помощи специального провайдера (OLE DB Provider for ODBC drivers), который умеет подключаться к источникам данных ODBC. Данная схема помогала в случае отсутствия OLE DB провайдера для конкретной базы данных. На сегодняшний день поддержка этого драйвера прекращена.

    Источники данных OLE DB

    Для подключения через OLE DB не требуется регистрация источника данных в системе, как это принято в ODBC. Вся информация хранится либо в файлах с расширением udl, либо указывается непосредственно в строке подключения.

    Для редактирования подключения OLE DB с расширением udl ассоциирован редактор связей с данными Data Link. Он поддерживает расширенную настройку провайдера данных за счет включения в свой интерфейс дополнительных страниц, о которых ему сообщает выбранный OLE DB провайдер.

    Чтобы запустить редактор Data Link создайте пустой файл с расширением udl и запустите его на выполнение.

    Управляющие последовательности ODBC (ODBC Escape Sequences)

    Развитие языка SQL сделало его реализации в различных базах данных несовместимыми между собой. Для решения проблемы совместимости были предложены управляющие последовательности ODBC (ODBC Escape Sequences). Они позволили писать SQL запросы, которые были бы совместимы с большинством баз данных.

    ADO и DAO

    Библиотека ADO поддерживается следующими средствами:

    • в Visual Studio: Visual C++ и Visual Basic;
    • Microsoft Office, Visual Basic For Applications.
    • Скриптовые языки VBcript, JavaScript, WSH
    • Остальные, поддерживающие COM.

    Интеграция с Microsoft Office

    Средства Microsoft Office поддерживают загрузку данных и через OLE DB и через ODBC. Полноценное использование всех офисных средств управления данными зависит от возможностей конкретных OLE DB провайдеров и ODBC драйверов.

    Для пользователей Firebird и InterBase такая поддержка есть.

    Microsoft MS SQL Server

    SQL Server позволяет обращаться из Transact SQL к базам данных других серверов, включая Firebird и InterBase через технологию Linked Server.

    Linked Server взаимодействует только с OLE DB провайдерами и не поддерживает ODBC дравейра.

    Business Intelligence

    В состав SQL Server входят три средства Business Intelligence:

    ODBC Firebird, ODBC InterBase или все же OLE DB?

    ODBC драйвера

    ODBC драйвера Easysoft распространяются отдельно для Firebird и отдельно для InterBase:

    На сайте Easysoft достаточно внушительный список ODBC драйверов, но нет информации о дате последних обновлений драйверов для Firebird и InterBase. Судя по номерам поддерживаемых версий, изменения происходили достаточно давно.

    Для того чтобы скачать эти драйвера, необходимо зарегистрироваться на сайте EasySoft.

    OLE DB

    В состав решения входят 2 OLE DB провайдера. Подробнее о назначении каждого читайте здесь

    Заключение

    На мой взгляд, выбор технологии доступа для Firebird и InterBase очевиден, но, несмотря на это каждый месяц посетители поисковых систем ищут магические ODBC Firebird driver и ODBC InterBase driver для создания новых приложений.

    Между тем выбор средства доступа к базе данных, как и самой базы данных, является основой приложения и от этого выбора может зависеть не только производительность, скорость разработки, но и успех проекта в целом.

    Дополнительная информация с сайта IBProvider

    Какую версию Firebird выбрать?

    Сервер Firebird SQL доступен в 3-х вариантах:

    • Firebird Super Server
    • Firebird Classic Server
    • Firebird Embedded

    Firebird Super Server

    Firebird Classic Server

    Firebird Embedded

    Firebird Embedded Server распространяется отдельным дистрибутивом.

    Если затрудняетесь с выбором

    Если вы не уверены в выборе типа установки Firebird, то используйте Firebird Super Server. В дальнейшем вы без труда сможете изменить архитектуру сервера.

    Начало работы с Firebird

    Для знакомства с Firebird можно использовать тестовую базу данных employee.fdb. Она входит в установочный комплект Firebird и расположена в папке Program Files\Firebird\Firebird\examples\empbuild\.

    Создание новой базы Firebird

    Для создания пустой базы Firebird:

    • запустите утилиту C:\Program Files\Firebird\Firebird\bin\isql.exe
    • выполните инструкцию создания базы данных:

    В ISQL каждое выражение завершается точкой с запятой.

    Проверить подключение можно, выполнив запрос:

    SQL> select MON$DATABASE_NAME from MON$DATABASE;

    Если все сделано правильно, SQL запрос вернет путь к подключенной базе данных:

    Безопасность Firebird

    • Firebird хранит всех пользователей в одной служебной базе данных security.fdb.
    • Начиная с Firebird 2.1 реализована поддержка SSPI аутентификации средствами Windows. Администраторы домена на уровне БД определяются как суперпользователи SYSDBA.
    • В Firebird 3.0 планируется реализовать возможность хранения пользователей в клиентской базе данных.

    Пользователь SYSDBA. Смена пароля по умолчанию

    c:\Program Files\Firebird\bin>gsec GSEC> modify SYSDBA -pw NEW_PASS

    При помощи утилиты gsec можно создавать, удалять, модифицировать и просматривать пользователей. Полный список команд можно получить, набрав help.

    Подключение к Firebird из клиентского приложения

    Для начала скачайте и установите пакет IBProvider Professional Edition.

    Для проверки подключения к Firebird напишем простой сценарий на языке VBScript. Создайте пустой файл с расширением vbs и вставьте в него следующий код, указав правильный путь к базе данных:

    Запустите скрипт на выполнение в режиме командной строки, и вы увидите список активных подключений к БД.

    Firebird и VBScript, Visual Basic, VBA

    Для доступа к Firebird и InterBase из VBScript, VBA, Visual Basic используется библиотека ADO (ActiveX Data Objects). Множество примеров работы с этой библиотекой вы найдете в документации: примеры InterBase, Firebird VBScript, VBA, Visual Basic.

    Firebird и Delphi

    IBProvider предлагает несколько способов работы с InterBase и Firebird из Delphi:

    • dbGo (ADO Express) компоненты, работающие через библиотеку ADO.
    • прямой доступ к COM-интерфейсам ADO, минуя компоненты dbGo.
    • прямой доступ к COM-интерфейсам OLE DB при помощи сторонних VCL-компонент (OLE DB Direct/OLE DB Express).

    Дополнительные материалы по теме:

    Firebird и C++

    В состав IBProvider Professional Edition входит C++ библиотека, которая предоставляет самый быстрый способ работы с OLE DB провайдерами из Visual C++ 2005-2008, а так же из C++ Builder.

    Редактирование базы Firebird

    В пустой базе данных необходимо создать таблицы, связи между таблицами, первичные ключи, индексы, хранимые процедуры, генераторы и другие объекты. Для редактирования баз данных Firebird вы можете использовать утилиту isql.exe.

    SQL> CREATE TABLE cross_rate CON> ( CON> from_currency VARCHAR(10) NOT NULL, CON> to_currency VARCHAR(10) NOT NULL, CON> conv_rate FLOAT NOT NULL, CON> update_date DATE, CON> CON> PRIMARY KEY (from_currency, to_currency) CON> );

    Вставляем одну запись и делаем выборку из таблицы:

    Помимо isql существует различные графические утилиты администрирования Firebird.

    Утилиты администрирования Firebird

    FlameRobin

    IBExpert

    IB/FB Development Studio

    Blaze Top

    Database Workbench

    Читайте также: