Предисловие
В данном обзоре будет описан один из способов работы с базой данных
Firebird в среде .Net при помощи управляемого Ole Db провайдера.
Несомненным преимуществом сервера баз данных Firebird является его
бесплатность в сравнении с существующими, не очень дешевыми аналогами
(прежде всего MS SQL Server и ORACLE).
Firebird можно использовать для систем практически любого уровня,
начиная от однопользовательских настольных приложений со встроенной
базой данных (Embed Database), до клиент-серверных приложений уровня
корпорации.
Средства и технологии, используемые в статье:
- ADO .Net 2.0
- Data Protection API (DAPI)
- Visual Studio 2005 Professional
- Firebird SQL Server 2.0
- IBProvider v.3 и IBProvider v.2
Что такое OLE DB Provider?
Для доступа к базам данных в ADO (а теперь эта возможность есть и в
ADO.Net) используются OLE DB провайдеры. Ole Db Provider представляет
собой драйвер для доступа к базе данных при помощи OLE DB интерфейсов.
Для взаимодействия с OLE DB провайдером в .Net реализовано пространство
имен System.Data.OleDb.
При работе с Firebird я использую IBProvider (www.ibprovider.com)
и в своем повествовании буду опираться, прежде всего, на его
функциональность. Разработчики IBProvider поддерживают три коммерческих
версии драйвера. Так же есть бесплатная.
Для написания примеров применялся IBProvider третьей версии и только
для примера управляющих ODBC последовательностей использовался
IBProvider v2.
Список основных различий в версиях IBProvider:
| Возможности |
IBProvider Free |
IBProvider v1/IBProvider v2 |
IBProvider v3 |
| Поддержка всей линейки серверов Interbase, Yaffil, Firebird, включая FB2 |
да |
да |
да |
| Возможность работы с ADO и соответственно с Microsoft Office, VBA, VBScript, Java Script и др. |
да |
да |
да |
| Отсутствие ограничений на размер получаемых данных |
да |
да |
да |
| Поддержка ADO.Net |
нет |
да |
да |
| Возможность работы в качестве MS SQL Linked Server |
нет |
да |
да |
| Работа с метаданными |
нет |
да |
да |
| Поддержка обновляемых множеств |
нет |
нет/да |
пока нет |
| Поддержка распределенных транзакций |
нет |
да |
да |
| Вложенные транзакции |
нет |
нет |
да |
| Поддержка управляющих последовательностей ODBC для SQL
запросов (используется в Crystal Reports, MS SQL Server, различные OLAP
и др. инструменты) |
нет |
да |
пока нет |
| Поддержка DDL запросов |
да, но без поддержки SQL парсером провайдера |
да |
да |
| Тип закладок |
4 байта |
4 байта/8 байт |
8 байт |
| Поддержка Client Cursor Engine |
нет |
да |
да |
| Уведомления о завершении транзакции |
нет |
нет |
да |
| Предоставление расширенной информации о сервере (версия, тип сервера, размер страницы). |
нет |
да |
да |
| Возможность задавать используемую клиентскую библиотеку (gds32.dll или fbclient.dll) |
нет |
нет |
да |
| Поддержка изменений в DML (Data Model Language) для Firebird 2 |
нет |
нет |
да |
| Новые свойства и алгоритмы Firebird 2 (возможность узнать дату создания базы и т.п.) |
нет |
нет |
да |
Наиболее современным решением является IBProvider третьей
версии. В его основе лежит абсолютно новое ядро и в нем реализованы
технологии управления данными, которые явились результатом 5-тилетних
исследований в данной области, а так же вобрали в себя опыт разработки
крупных программных проектов и библиотек доступа к данным. На момент
написания статьи в третьей версии не была реализована технология
обновляемых множеств, а так же не поддерживались управляющие
последовательности ODBC. Но, насколько мне известно, поддержка ODBC
Escape Sequences уже планируется разработчиками в ближайших версиях
провайдера.
Методы подключения к базе данных
Параметры строки подключения
Для использования Ole Db провайдера необходимо подключить соответствующее пространство имен к нашему проекту:
using System.Data.OleDb;
Управление подключением к Ole Db источникам данных осуществляется с помощью класса OleDbConnection. Самый простой способ подключения к базе данных – прямое указание строки подключения в конструкторе этого класса:
OleDbConnection con = new OleDbConnection(connectionString); con.Open(); con.Close();
Для формирования строки подключения в Net 2.0 появился класс OleDbConnectionStringBuilder:
OleDbConnectionStringBuilder cb = new OleDbConnectionStringBuilder(); cb.Provider = "LCPI.IBProvider"; cb.Add("Location",@"localhost:d:\Program Files\Firebird\examples\EMPLOYEE.FDB"); cb.Add("User ID", "sysdba"); cb.Add("Password", "masterkey"); cb.Add("ctype", "win1251"); Console.WriteLine(cb.ToString())
Существует определенный набор свойств инициализации IBProvider-a,
который необходимо установить перед выполнением соединения с БД:
Обязательные свойства инициализации (параметры подключения) IBProvider:
| Свойство |
Описание |
| Location |
Путь к базе данных на сервере. |
| Provider |
Имя Ole Db провайдера |
| User ID |
Имя пользователя базы данных |
| Password |
Пароль пользователя |
| Ctype |
Кодировка определяет, символы какого национального алфавита будут
использоваться. Для русского и английского алфавита можно использовать
кодировку WIN1251 |
Некоторые необязательные свойства инициализации IBProvider:
| Свойство |
Описание |
|---|
| Data Source |
Данное свойство используется для задания user friendly имени для базы данных, например "Employee DB". Если свойство Loсation не определено, то предполагается, что в Data Source указано расположение базы данных. |
| db_client_type |
Тип клиента сервера базы данных. Есть только в IBProvider v3. |
| db_client_library |
DLL с клиентом сервера |
| auto_commit |
Режим автоматического подтверждения транзакций. Для его включения в строке подключения необходимо указать “auto commit =true”. |
| role |
Роль пользователя |
Более подробно о свойствах инициализации IBProvider-а можно прочитать здесь
| СОВЕТ. Всегда включайте в параметр Location имя сервера базы данных. Это позволит обеспечить совместимость со всем версиями Firebird |
Способы хранения строк подключения
В реальных приложениях никто не прописывает строки подключения к базе
данных в коде. Гораздо эффективнее использовать для этой цели либо
настройки приложения (технология Settings), либо отдельный файл
подключения.
Для хранения параметров подключения в Windows существует специальный тип файлов Microsoft Data Link
– это файл с расширением udl. С этим расширением ассоциирован
универсальный редактор подключений. IBProvider поддерживает свои
собственные табы, которые предоставляют удобный интерфейс для
формирования параметров соединения. Для того чтобы использовать udl
файл в своем приложении, выполните следующие шаги:
- Создайте пустой файл с расширением .udl
- Откройте файл (Enter), появится связанный с данным расширением диалог для настройки подключения:
- В списке OleDb провайдеров выберете IBProvider v3:
- Задайте параметры подключения по аналогии с рисунком и нажмите кнопку «Проверить подключение»:
- На вкладке дополнительно вы можете задать расширенные свойства подключения:
- Нажмите «Ок» для записи информации о подключении в файл
Теперь для того, чтобы использовать подключение, описанное udl
файлом, достаточно явно или через OleDbConnectionStringBuilder задать
свойство File Name
OleDbConnectionStringBuilder cb = new OleDbConnectionStringBuilder(); cb.FileName = AppDomain.CurrentDomain.BaseDirectory + @"\employee.udl"; OleDbConnection con = new OleDbConnection(cb.ToString()); con.Open();
Второй способ хранения строки подключения – это поместить её в конфигурационный файл приложения:
В свойствах проекта выберите вкладку Settings и создайте новое свойство с именем ConnectionString и типом (Connection string):
При редактировании свойства запустится встроенный в VS 2005 редактор строки подключения:
| ПРИМЕЧАНИЕ. Если нажать на кнопку “Data Links”, то появится уже знакомый нам диалог конфигурации Microsoft Data Link |
Для того, чтобы прочитать строку подключения из файла конфигурации,
необходимо создать экземпляр класса настроек вашего приложения:
Properties.Settings s = new Properties.Settings(); //чтение свойства с именем ConnectionString Console.WriteLine(s.ConnectionString);
Для облегчения написания примеров был создан класс
ConnectionProvider, который инкапсулирует в себе все, описанные методы
подключения.
Другие материалы по теме
|