Ibprovider Professional Edition

Posted on -
Ibprovider Professional Edition Average ratng: 5,7/10 9966 votes

Блог разработчика IBProvider Инновации для Firebird и Interbase - Блог разработчика IBProvider, примеры кода, авторские статьи.

(48 ч) и 10 раб. Инструкция по статистике количества работников. (80 ч) соответственно. (40 ч); • уволенный и принятый работники отработали 6 раб.

Предисловие В данном обзоре будет описан один из способов работы с базой данных 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 и в своем повествовании буду опираться, прежде всего, на его функциональность. Разработчики 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. Способы хранения строк подключения В реальных приложениях никто не прописывает строки подключения к базе данных в коде. Гораздо эффективнее использовать для этой цели либо настройки приложения (технология Settings), либо отдельный файл подключения. Для хранения параметров подключения в Windows существует специальный тип файлов Microsoft Data Link – это файл с расширением udl. С этим расширением ассоциирован универсальный редактор подключений. IBProvider поддерживает свои собственные табы, которые предоставляют удобный интерфейс для формирования параметров соединения.

Для того чтобы использовать udl файл в своем приложении, выполните следующие шаги:. Создайте пустой файл с расширением.udl. Откройте файл (Enter), появится связанный с данным расширением диалог для настройки подключения:.

Ibprovider Professional Edition Скачать

Ibprovider

В списке OleDb провайдеров выберете IBProvider v3. Если нажать на кнопку “Data Links”, то появится уже знакомый нам диалог конфигурации Microsoft Data Link Для того, чтобы прочитать строку подключения из файла конфигурации, необходимо создать экземпляр класса настроек вашего приложения: Properties.Settings s = new Properties.Settings; //чтение свойства с именем ConnectionString Console.WriteLine(s.ConnectionString); Для облегчения написания примеров был создан класс ConnectionProvider, который инкапсулирует в себе все, описанные методы подключения. Команды Команды предназначены для передачи запросов базе данных. Для Ole Db провайдеров команда реализуется классом OleDbCommand. Команда всегда выполняется для заданного открытого подключения к базе данных в контексте транзакции. Для того чтобы выполнить запрос к базе данных необходимо выполнить следующую последовательность действий:.

Создать подключение к БД и открыть его. Создать активную транзакцию из текущего подключения – метод OleDbConnection.BeginTransaction. Создать объект OleDbCommand, либо используя один из вариантов перегруженного конструктора, либо метод OleDbConnection.CreateCommand. Установить свойство команды Transaction, если оно не было задано в конструкторе.

Задать текст команды CommandText. Для обращения к базе данных у команды есть три метода ExecuteScalar, ExecuteReader и ExecuteNonQuery. Завершить транзакцию OleDbTransaction.Commit или откатить OleDbTransaction.Rollback и закрыть подключение. Параметры команд В большинстве случаев при выполнении команды требуется задать её параметры. Параметры добавляются в коллекцию Parameters. Они могут быть именованные и позиционные. Пример команды с позиционными параметрами: insert into country (country,currency) values(?,?) С именованными: insert into country (country,currency) values(:country,:currency) IBProvider сам умеет формировать список параметров, производя анализ SQL выражения.

Но, к сожалению, в ADO.Net необходимо вручную добавлять эти параметры, т.к. Команда не запрашивает их описание у Ole Db провайдера. Если вспомнить ADO, то в нем список параметров прекрасно формировался без необходимости вмешиваться в этот участок кода. Для того, чтобы добавить параметр, нужно воспользоваться:. для добавления именованного параметра и значения - методом AddWithValue. для добавления как именованных, так и неименованных параметров - перегруженным методом Add Если не указан тип параметра, он будет добавлен с Ole Db типом VarWChar, что соответствует.Net типу string, что кажется разумным.

Об этом не стоит беспокоиться, т.к. IBProvider корректно обрабатывает приведение любых типов Firebird. Нельзя не сказать о существующих ограничениях при использовании именованных параметров совместно с OleDbCommand. В MSDN написано, что именованные параметры поддерживаются только для поставщиков данных MSSQL и Oracle, а для поставщиков данных Ole Db и ODBC поддерживаются только позиционные параметры. Использовать именованные параметры все же можно, но их добавление в коллекцию Parameters необходимо осуществлять в том же порядке, в каком они следуют в запросе. К примеру, если текст команды: update country set currency=:currency where country =:country то сначала необходимо добавить параметр currency, а потом country: cmd.Parameters.AddWithValue( 'currency', 'Rouble'); cmd.Parameters.AddWithValue( 'country', 'Russia'); Задавать значения параметров можно уже в произвольном порядке: cmd.Parameters 'country'.Value = 'Latvia'; cmd.Parameters 'currency'.Value = 'Lat'. MARS - Multiple Active Result Sets В ADO.Net 2.0 появилась «новая» технология, которая получила название MARS.

В Net Framework 1.1. В одном контексте транзакции было невозможно держать открытый OleDbDataReader и параллельно выполнять дополнительные запросы к базе данных или открывать ещё один OleDbDataReader. При попытке выполнить этот трюк мы получали исключение вида: «There is already an open DataReader associated with this Connection which must be closed first.» Предыдущий пример работы с BLOB полями как раз и показывает применение технологии MARS. В нем демонстрируется последовательное чтение данных и их одновременное их обновление. Если обратиться к истории, то мы обнаружим, что технология эта совсем не новая, да и технологией назвать это сложно.

Если сравнить вторую версию ADO.Net с первой, то, конечно, разработчики добились определенных успехов. Но возможность использовать несколько RecordSet в одной транзакции была реализована ещё в классическом ADO. Скажу больше, там можно было использовать несколько RecordSet, связанных с одной командой.

Это достигалось за счет клонирования команды внутри себя, если обнаруживалось, что уже есть связанное с ней множество. В ADO.NET команда тоже умеет клонировать саму себя. Для этого есть метод Clone, который необходимо вызывать явно, если вы хотите связать несколько OleDbDataReader с одной командой. Таким образом, применение MARS возможно не только для MS SQL Server, как пишут во многих источниках информации, но и для других баз данных.