|
|
|||||||||||||||||||||||||||||
|
Использование встроенного интерфейса при работе с базой данных RDM Embedded от компании Birdstep TechnologyИсточник: Переведено БНТП по заказу Interface Ltd
Оглавление
АннотацияБаза данных RDM Embedded от Birdstep Technology является чрезвычайно гибкой СУБД, имеющей более 150 интерфейсов прикладного программирования (API) для надежного управления базой данных. В данной статье описан простой пример, использующий встроенный набор API для работы с RDM Embedded. Статья предназначается для читателей, у которых имеется достаточный опыт в разработке приложений на языке C, а на рабочем компьютере установлен комплект разработчика (SDK) RDM Embedded. Сам SDK для RDM Embedded можно загрузить по адресу http://www.birdstep.com/downloads/database_download.php3 (следуя ссылке "download free SDK"). Интерфейс API и описания можно найти здесь. НастройкаНиже перечислены все компоненты, необходимые для доступа к базе данных RDM Embedded из приложений C/C++, созданных для платформы Windows:
После завершения установки этих компонентов требуется выполнить три простых конфигурационных шага Шаг 1) Конфигурирование окруженияИмеются два параметра окружения, которые необходимо установить для настройки доступа к вашим данным:
Шаг 2) Конфигурирование базы данныхДоступ к базе данных RDM Embedded осуществляется с помощью заголовочного файла на C и словарного файла RDM, причем оба эти файла создаются утилитой ddlp, включенной в SDK базы данных RDM Embedded. В качестве рабочего примера, мы создадим заголовочный и словарный файлы, исходя из имеющейся схемы. Приведенная ниже схема описывает базу данных simpledb, имеющую одну таблицу, названную simpletb. Таблица simpletb содержит 3 поля: Первое поле с названием fld1 является ключевым с элементами типа long, второе названо fld2 с элементами типа short и третье - fld3, представляющее собой массив char[10]. Окончательно, в файле datafile1.D01 будет храниться содержимое базы данных, а в файле keyfile1.K01 будут содержаться индексированные элементы fld1. Для создания заголовочного и словарного файла сначала скопируйте приведенную ниже схему в текстовый файл, названный schema.ddl. Затем, запустив сеанс DOS, выполните утилиту ddlp для файла схемы: ddlp schema.ddl.
С помощью утилиты ddlp вы создадите два новых файла:
Шаг 3) ПриложениеДля подготовки приложения к использованию встроенного интерфейса включите в ваши исходные файлы следующие операторы include:
Теперь ваше приложение сконфигурировано для доступа к данным вашей RDM Embedded. Создаем первое приложение, использующее RDM EmbeddedТеперь мы создадим самое простое приложение "Hello World". Приложение будет состоять из следующих разделов:
Раздел 1: Определение менеджера блокировокДля осуществления многопользовательского доступа к базе данных RDM Embedded вам следует определить интерфейс менеджера блокировок. Имеется два менеджера блокировок: внутренний менеджер блокировок для окружений, в которых все пользователи работают за одним и тем же компьютером, и менеджер блокировок для TCP, где клиенты распределены в рамках вычислительной сети. В качестве примера последней блокировки, используя d_lockcomm API, можно выбрать:
Затем можно выбрать именованный менеджер блокировок, с которым приложение будет обмениваться информацией. Это выполняется с использованием d_lockmgr API, где вторым параметром является IP-адрес компьютера, на котором выполняется процесс менеджера блокировок. Более подробно процесс менеджера блокировок будет обсужден ниже.
Затем определите имя пользователя с использованием d_dbuserid API.
Раздел 2: Инициализация базы данныхДля выполнения инициализации базы данных сначала откройте ее в эксклюзивном режиме с использованием d_open API, затем инициализируйте с использованием d_initialize API. После этого закройте базу данных, чтобы можно было открыть ее позже в режиме совместного использования.
Раздел 3: Наполнение базы данных информациейПосле инициализации базы данных таблица simpletb может быть заполнена информацией. Для этого нужно выполнить следующие шаги: Запустить транзакцию, затребовать блокировку, добавить новые данные, и затем зафиксировать транзакцию. Запустите новую транзакцию, названную "Enter":
Поместите блокировку записи на таблицу simpletb:
Заполните индивидуальные элементы:
Завершите транзакцию, при этом все блокировки будут сняты, а любые изменения будут внесены в базу данных.
Раздел 4: Навигация по базе данныхРаздел 4a: Навигация по экземплярам записейДля демонстрации процедур навигации будет выполнена навигация по записи базы данных для подтверждения правильности ввода данных в разделе 3. При работе с транзакцией (в этот раз она названа "Record"), будет использована блокировка таблицы на чтение ("read"). Для упрощения процесса сканирования, используйте d_recfirst and d_recnext API’s в цикле и выведите содержимое поля один и поля два:
Следует отметить, что этот метод сканирования иллюстрирует архитектуру сетевой модели RDM Embedded, которая в своей простейшей форме является просто связанным списком. Каждая из распечатанных записей выводится в том же самом порядке, что и связанный список. Раздел 4b: Навигация с помощью индексированного поляДругим навигационным примером служит навигация по базе данных с помощью индексированного поля fld1. Снова при работе с транзакцией (в этот раз она названа "Key"), будет использована блокировка таблицы на чтение ("read"). Для упрощения процесса сканирования, используйте d_ keyfrst and d_ keynext API в цикле и выведите содержимое поля один и поля два:
Раздел 5: Закрытие базы данныхПоследнее, что нужно сделать - это закрыть базу данных с использованием d_close API:
Раздел 6: КомпиляцияПосле завершения работы над исходным кодом приложения база данных может быть скомпилирована. Этот пример использует интегрированную среду разработки MSVC 6.0 - просто нажмите <F7> для компиляции. Ниже перечислены некоторые типичные ошибки, вероятные при компиляции:
Раздел 7: Менеджер блокировокПеред выполнением программы HelloWorld запустите менеджер блокировок. Это отдельный процесс, который выполняется на том же самом компьютере, что и приложение, хотя это необязательно для менеджера блокировок TCP. Для запуска просто введите "lm", находясь в сеансе DOS. Будет выдано следующее сообщение:
IP-адрес является адресом, используемым в d_lockmgr API в разделе 1. Ваш IP-адрес будет другим. Раздел 8: ВыполнениеПоследнее, что осталось - выполнение. Находясь в среде MSVC, просто нажмите <ctrl><F5>. Могут наблюдаться несколько стандартных ошибок: Если все сделано правильно, то на экран должна быть выдана следующая информация
Возможные ошибки во время выполнения
Исходный текст для файлов проекта MSVC 6.0 можно найти здесь. Ссылки по теме
|
|