Скачать 114.98 Kb.
|
УДК 004.65 Крамаренко Т.А., Тихонов Ю.Л. РЕКОМЕНДАЦИИ ПО ВЫБОРУ МЕХАНИЗМОВ ДОСТУПА ПРИЛОЖЕНИЙ БАЗ ДАННЫХ НА C++ ДЛЯ СУБД MYSQL В СРЕДАХ CODE GEAR RAD STUDIO 2009 И VISUAL STUDIO 2005 В статье приводятся рекомендации по выбору механизмов доступа приложений баз данных на C++ для СУБД MySQL в средах Code Gear RAD Studio 2009 и Visual Studio 2005 В современных условиях процессы управления и обработки баз данных (БД) и информационных систем (ИС) автоматизированы и обрабатываются средствами вычислительной техники. Многопользовательские системы управления базами данных (СУБД) позволяют создавать ИС, функционирующие в архитектуре "клиент-сервер". Пользователь осуществляет работу с базой при помощи приложений БД. Двухуровневые приложения, использующие удаленные базы данных, содержат клиентскую и серверную части. На сегодняшний день одной из самых популярных клиент-серверных СУБД является MySQL. MySQL свободная СУБД, портирована на большое количество платформ, имеет API (Application Programming Interface, интерфейс прикладного программирования) для языков программирования Delphi, C, C++, Eiffel, Java, Лисп, Perl, PHP, Python, Ruby, Smalltalk и Tcl, библиотеки для языков платформы .NET, а также обеспечивает поддержку для ODBC посредством ODBC-драйвера MyODBC. Актуальным является выбор языка, среды программирования и технологии создания клиентского приложения для СУБД MySQL, т.к. не смотря на поддержку MySQL интерфейса прикладного программирования приложений для многих языков, не все среды программирования имеют механизмы доступа приложений для данной СУБД и, зачастую, ориентированы на определенные СУБД. Например, современные мощные среды, содержащие компиляторы С++, Microsoft Visual Studio и Code Gear RAD Studio имеют обязательные механизмы поддержки соответственно СУБД Microsoft SQL Server, Microsoft Access и InterBase, наряду с другими СУБД. Вопросы создания клиентских приложений БД на C++ рассмотрены многими отечественными и зарубежными учеными и специалистами в данной области. Так А. Хомоненко и С. Ададуров описывают различные механизмы доступа приложения БД (в частности для клиент-серверной СУБД InterBase), а также компоненты для создания клиентского приложения при работе с базами данных в Code Gear RAD Studio – C++ Builder [1]. В свою очередь Л. Пауэрс, М. Снелл и Б. Пахомов, касаются вопросов взаимодействия с базами данных (СУБД Microsoft SQL Server и Microsoft Access) и программирования приложения БД с применением Windows Forms в среде Microsoft Visual Studio [2, с. 696-748; 3, с. 487-517]. Л. Аткинсон рассматривает вопросы написания приложений на С и С++, взаимодействующих именно с сервером MySQL, с использованием клиентской библиотеки MySQL языка С mysql.h, а также с использованием библиотеки MySQL++ – официальной библиотекой классов языка С++, предназначенной для взаимодействия с MySQL, работающей с большинством компиляторов С++, включая Visual C++ компании Microsoft [4, с. 375-382, 421-425]. Архитектура клиент-сервер представляет собой вычислительную или сетевую архитектуру, в которой задания или сетевая нагрузка распределены между поставщиками услуг, – серверами, и заказчиками услуг, – клиентами. В системах, построенных по технологии "клиент-сервер", существует два вида интерфейса: интерфейс, реализуемый при помощи клиентского приложения и Web-интерфейс. Интерфейс, реализуемый при помощи клиентского приложения – это компьютерная программа, устанавливаемая на клиентские компьютеры, предназначенная для работы с файлами данных через сеть. В данной работе рассмотрим и проанализируем механизмы доступа приложений БД с клиентским интерфейсом без создания элементов интерфейса приложения: форм, отчетов и т.д. Программными средами, реализующими все требования, предъявляемые к клиентскому приложению, а также имеющими механизмы доступа приложений к удаленным БД, являются Code Gear RAD Studio и Visual Studio. Цель работы – анализ механизмов доступа приложений баз данных для клиент-серверной СУБД MySQL на языке C++ в средах Code Gear RAD Studio 2009 и Microsoft Visual Studio 2005 и разработка рекомендаций по их использованию. Среда Code Gear RAD Studio 2009 – C++ Builder для доступа к удаленной базе данных имеет следующие механизмы: ADO, BDE, dbExpress, InterBase Express. Последний механизм ориентирован только на работу с сервером InterBase. ^ (ActiveX Data Objects – объекты данных ActiveX) представляет собой универсальный механизм доступа к различным источникам данных из приложений баз данных c помощью OLE DB (Object Linking and Embedding Data Base – связывание и внедрение объектов БД) и является стандартом фирмы Microsoft. Основу технологии составляет использование набора интерфейсов общей модели COM, являющихся системным механизмом Windows. При использовании технологии ADO приложение может использовать данные из электронных таблиц, таблиц локальных и серверных баз данных, XML-файлов и т.д. (рис. 1) ![]() Рис. 1. Схема доступа к данным с помощью ADO В соответствии с технологией ADO любой источник данных (базу данных, файл, электронную таблицу) называют хранилищем данных. Приложение взаимодействует с хранилищем данных с помощью провайдера. Для каждого типа хранилища данных используется свой провайдер ADO. Провайдер обеспечивает обращение к данным хранилища с запросами, интерпретацию возвращаемой служебной информации для передачи их приложению. Все объекты и интерфейсы ADO являются объектами и интерфейсами СОМ. После установки Microsoft ActiveX Data Objects в операционной системе доступны стандартные провайдеры ADO для соединения с серверами, такими как Microsoft SQL Server, Oracle, Access и некоторыми другими. Для неуказанных СУБД возможно создание соединения с сервером посредством программного интерфейса доступа к базам данных ODBC (Open Database Conectivity). Он позволяет работать с разными источниками данных, в независимости от особенностей их взаимодействия в каждом конкретном случае. СУБД MySQL обеспечивает поддержку для ODBC посредством ODBC-драйвера MyODBC и поэтому данный механизм доступа приложений может быть использован для создания клиентского приложения. На компьютере клиента необходимо установить драйвер MyODBC, добавить новый источник данных. Для создания собственно приложения БД нужно создать проект VCL Form Application – C++ Builder, добавить в него модуль DataModule (Модуль данных – служит для размещения не визуальных компонентов, через которые осуществляется доступ к данным). Для создания соединения добавить компонент ADOConnection (ADO-соединение, используемое для установки соединения с ADO-источником данных и обеспечивающее поддержку транзакций) с вкладки ADO Палитры инструментов и затем выбрать в свойстве ConnectionString созданный источник данных ODBC (рис. 2). ![]() ![]() Рис. 2. Настройка источника данных ODBC и компонента соединения. Далее следует установить на модуль данных с вкладки ADO нужные компоненты доступа к данным по технологии ADO: ADOCommand (ADO-команды, используются для выполнения SQL-команд доступа к ADO-источнику данных без возвращения результирующего набора данных), ADODataSet (набор данных ADO, обеспечивает доступ к одной или более таблице ADO-источника данных и позволяет другим компонентам управлять этими данными), ADOTable (таблица ADO, обеспечивает доступ к одной таблице ADO-источника данных и позволяет другим компонентам управлять этими данными, связываясь с компонентом ADOTable через компонент DataSourse), ADOQuery (запрос ADO, позволяет выполнять SQL-команды для получения информации из ADO-источника данных и позволяет управлять этими данными) и ADOStoredProc (хранимая процедура ADO, позволяет приложениям получать доступ к хранимым процедурам). Компоненты необходимо настроить на ADO-соединение и определить объект данных БД, выбрав и заполнив соответствующие свойства. Затем следует расположить на модуле с вкладки DataAccess необходимое количество компонентов DataSourse (источников данных), которые используются как промежуточное звено между набором данных и визуальными компонентами, с помощью которых пользователь управляет этим набором данных. В C++ Builder набор данных (НД) представляет собой совокупность записей, взятых из одной или нескольких таблиц БД. НД является логической таблицей, с которой можно работать при выполнении приложения. В свойстве DataSet компонента DataSourse следует выбрать нужный компонент доступа к данным. ADO не позволяет работать с новыми типами БД, а также обновлять список поддерживаемых БД, т.к. является достаточно ранней технологией. К достоинствам ADO можно отнести независимость от драйверов БД, установленных в операционной системе, простое программирование. ^ (Borland Database Enging – процессор (машина) баз данных фирмы Borland) включает в себя первый и долгое время наиболее распространенный механизм доступа к данным из приложений, разработанных с использованием систем программирования от Borland. BDE представляет собой совокупность динамических библиотек и драйверов, обеспечивающих доступ к данным. Доступ приложения к СУБД осуществляется через драйверы SQL-Links. Приложение через BDE передает запрос к БД, а обратно получает требуемые данные (рис. 3) ![]() Рис. 3. Двухуровневая архитектура "клиент-сервер" Для СУБД MySQL необходимо установить предварительно процессор BDE, MyODBC-драйвер, создать источник данных ODBC (как в технологии ADO), отредактировать, или создать псевдоним БД в окне BDE Administrator. На модуль данных в проекте VCL Form Application – C++ Builder для соединения с сервером БД добавить компонент DataBase. При настройке компонента DataBase выбрать заданный псевдоним, ввести имя БД и т.д. (рис. 4). ![]() ![]() Рис. 4. Настройка псевдонима БД и компонента соединения Далее следует установить c вкладки BDE на модуль данных нужные компоненты для работы с наборами данных при использовании механизма BDE: Table (получает и обслуживает НД, состоящий из записей единственной физической таблицы БД), Query (предназначен для получения набора записей из одной или нескольких таблиц БД), StoredProc (вызов хранимых процедур) и UpdateSQL (обеспечивает работу с кэшированными изменениями в записях). Установленные компоненты настроить на соединение, выбрать объекты данных БД. Затем, аналогично, как в технологии ADO, добавить и настроить компоненты источники данных. Процессор BDE должен устанавливаться на всех компьютерах, на которых выполняются приложения С++ Builder. Инсталляция BDE требует порядка 15 Мбайт внешней памяти на диске и настройки псевдонимов используемых БД. Для реализации запросов (реляционного способа) для доступа к удаленной БД с помощью BDE необходимо использовать только средства языка SQL. ^ . Данная технология является более новой. Технология dbExpress обеспечивает прямой доступ к промышленным серверам без BDE или любого подобного механизма. В основе технологии dbExpress лежит использование множества драйверов, компонентов, объединяющих соединения, транзакций, запросов и наборов данных, а так же интерфейсов, реализующих универсальный доступ к соответствующим функциям. При ее использовании для доступа к данным используются SQL-запросы. Обладая легкой переносимостью, приложения нормально работают под управлением как Windows, так и Linux. Для использования этой технологии достаточно подключить к приложению динамически подключаемою библиотеку с драйвером, взаимодействующим с клиентским программным обеспечением для нужного сервера базы данных, в частности, для MySQL (рис. 5). Библиотека libmysql.dll должна находиться либо в папке WINDOWS\System32, либо в папке с клиентским приложением. ![]() Рис. 5. Схема доступа к данным с помощью dbExpress На модуль данных в проекте VCL Form Application – C++ Builder для соединения с сервером БД следует добавить с вкладки dbExpress компонент SQLConnection. Данный компонент служит для установки соединения с сервером БД и представляет собой аналог компонента DataBase в BDE и ADOConnection в ADO. Компонент SQLConnection взаимодействует с двумя файлами, расположенными в каталоге ..\Common Files\Borland Shared\DBExpress. Файл dbxdrivers.ini содержит список инсталлированных драйверов серверов БД, и для каждого драйвера – список динамически подключаемых библиотек и параметров соединений, установленных по умолчанию. Список соединений содержится в файле dbxconnections.ini. Для наглядности приведем фрагмент кода из этого файла касательно СУБД MySQL. [MySQLConnection] DriverName=MySQL HostName=127.0.0.1 Database=strahovanievar30 User_Name=Admin Password=rhfvfhtyrj BlobSize=-1 ErrorResourceFile= LocaleCode=0000 Файл заполняется автоматически после настройки компонента SQLConnection. Для СУБД MySQL необходимо выбрать из списка в свойстве Driver строку MySQL, после чего отобразятся настройки для данной СУБД. Затем нужно задать следующие основные свойства компонента непосредственным вводом в нужные поля в ObjectInspector или, заполнив диалоговое окно свойства Params: хост (свойство HostName), указать имя базы данных (свойство Database), пользователя (свойство UserName), пароль (свойство PassWord), и т.д. (рис. 6). ![]() ![]() Рис. 6. Настройка компонента SQLConnection, свойство Params Далее следует установить c вкладки dbExpress на модуль данных нужные компоненты для работы с наборами данных при использовании механизма dbExpress: SQLQuery, SQLTable, SQLMonitor, SQLStoredProc, SQLDataSet и SimpleDataSet. Выбирая компоненты следует учитывать, что несколько из перечисленных компонентов (SQLQuery, SQLTable, SQLStoredProc и SQLDataSet) являются однонаправленными наборами данных, в которых отсутсвует буферизация. Эти НД обеспечивают более быстрый доступ к данным и предъявляют меньшие требования к ресурсам, но при этом на них накладываются заметные ограничения. Поэтому следует использовать компонент SimpleDataSet. Компонент SimpleDataSet предназначен для редактирования набора данных (получения данных, их кэширования и отправления измененных данных на сервер). Компонент использует двунаправленный курсор и позволяет редактировать данные в режиме редактирования, исправляя основные недостатки технологии dbExpress. При использовании данного компонента необходимо прописать соответствующие процедуры для подтверждения внесения изменений в записи в БД. Аналогично, как в технологиях BDE и ADO, следует установить на модуле данных компоненты DataSourse и настроить их на наборы данных. По сравнению с использованием механизма BDE технология dbExpress обеспечивает построение более легковесных (по объему кода) приложений для работы с базами данных. К недостаткам технологии dbExpress можно отнести то, что она не поддерживает концепцию открытых таблиц и не содержит встроенную поддержку обновления данных, кроме способности выполнения запросов на вставку, удаление, обновление. Клиентское приложение на С++ для СУБД MySQL также можно разработать средствами программной среды Visual Studio. Начиная с версии Visual Studio 2005, появилась возможность создавать интерфейс, реализуемый при помощи Windows Forms. Visual Studio 2005 поддерживает следующие механизмы доступа к серверу: ADO и ADO.Net 2.0. ^ Применительно к СУБД MySQL данная технология имеет ограничения: реализуется доступ к серверу БД, но нет доступа к структуре объектов БД (рис. 7 слева). Данный недостаток исправляет следующая технология. ^ является смесью технологий ADO и RDC (Согласно данной технологии файлы данных рассматриваются в качестве устройств, т.е. для работы с БД необходим драйвер. Объект связи, работающий по технологии RDC, при работе с файлом данных сначала обращается к драйверу БД, который в свою очередь обращается к файлу данных). Объекты связи, работающие по этой технологии, работают аналогично объектам, работающим по технологии ADO, однако, объекты связи входят в состав пакета Microsoft Net Framework, и автоматически обновляются вместе с этим пакетом. Компоненты ADO.NET входят в поставку оболочки .NET Framework; таким образом, ADO.NET является одной из главных составных частей .NET. СУБД MySQL поддерживает библиотеки для языков платформы .NET, что позволяет использовать данную технологию для создания клиентского приложения. Для СУБД MySQL необходимо установить соответствующий драйвер ADO.NET, создать подключение в Обозревателе серверов к нужной базе данных на сервере (рис. 7 справа), а затем добавить в проект источник данных MySQL DataBase. Технология ADO.NET обеспечивает полный доступ к объектам базы данных и их структурам в отличие от технологии ADO. ![]() ![]() Рис. 7. Подключение к базам данных по технологии ADO и ADO.Net Недостатком ADO.NET является зависимость от пакета Microsoft Net Framework, а также использование собственной логики обновления в коде, при этом собственная логика обновления занимает больше места. Однако технология ADO.Net позволяет создавать динамические запросы и запросы, выполненные на стороне сервера, что является несомненным преимуществом. Выводы. Выбор варианта технологии доступа к информации в БД, кроме прочих соображений, определяется с учетом удобства подготовки разработанного приложения к распространению, а также дополнительного расхода ресурсов памяти. При выборе среды программирования на С++, механизмов доступа к приложению БД следует учитывать, что описанные технологии имеют ряд достоинств и недостатков. Скорость доступа к данным, обеспечиваемая технологией ADO, существенно ниже, чем при использовании BDE. Без установки и регистрации BDE на компьютере клиента не может работать приложение БД, созданное в C++ Builder и использующее механизм BDE. Это обстоятельство существенно затрудняет распространение приложения, так как вместе с программой должен поставляться набор библиотек BDE. Технология dbExpress позволяет обращаться непосредственно к SQL–серверам клиент-серверных СУБД, в том числе MySQL, не смотря на то, что технология dbExpress требует от программиста несколько больших усилий, чем технологии ADO и BDE. Таким образом, при выборе механизмов доступа к приложению БД (в том числе для СУБД MySQL) в среде Code Gear RAD Studio 2009, следует отдать предпочтение технологии dbExpress, так как она является более перспективной, создает "легкое" клиентское место (без громоздкого аппарата BDE и/или необходимости распространения вместе с приложением базовых объектов ADO) и также только эта технология обеспечивает создание клиентских мест и серверов приложений, работающих под управлением Linux. При выборе механизмов доступа приложений БД с среде Microsoft Visual Studio 2005 следует использовать технологию ADO.Net, которая позволяет создавать динамические запросы и запросы, выполненные на стороне сервера и реализует полный доступ к структуре объектов БД в отличие от ADO. Также следует учитывать, что фирма Microsoft на сегодняшний день считает актуальным создание клиентских приложений для баз данных на объектно-ориентированном языке С#. Поэтому в дальнейших версиях продукта Microsoft Visual Studio для языка С++ есть поддержка механизмов доступа только для собственных СУБД фирмы Microsoft. В дальнейших исследованиях предполагается проанализировать программные среды, поддерживающие создание Web-интерфейсов для доступа к базам данных, построенным по технологии "клиент-сервер", в частности для СУБД MySQL. Список литературы
|
![]() | ![]() | Даются подробные инструкции и рекомендации по работе с инструментальными средствами Microsoft Visual Studio для привязки данных приложений... | |
![]() | Тема: Создание в программе CodeGear rad studio (C++Builder) клиентского приложения по технологии dbExpress для клиент-серверной субд... | ![]() | Тема: Создание в программе CodeGear rad studio (C++Builder) клиентского приложения по технологии dbExpress для клиент-серверной субд... |
![]() | Тема: Язык программирования С++. Общая характеристика языка. Технология разработки программы. Пример программы на С++. Среда программирования... | ![]() | В меню «Пуск» – «Все программы» находим раздел Microsoft Visual Studio 2010 Express и запускаем программу Microsoft Visual Studio... |
![]() | Изучить основные подходы к разработке приложений на платформе asp. Net при помощи Visual Studio ide | ![]() | Программное обеспечение: операционная система Windows, интегрированная оболочка Visual Studio 2005 с установленным компонентом Visual... |
![]() | Субд ms sql 2000 Требования к рабочей станции: Операционная система Windows 98 и выше Язык реализации ms visual C++, ms visual Basic... | ![]() | Поэтому, продвигая платформу. Net, компания Microsoft предлагает также инструментарий для программистов — Visual Studio. Net и систему... |