Технологии доступа к данным являются прослойкой между API конкретного сервера и приложением пользователя, предоставляя программисту простой унифицированный механизм работы с данными.
На сегодняшний день существует множество технологий доступа к данным, таких как BDE, OLE, ODBC, DАО, АDО, и до сих пор разрабатываются новые, более надежные, удобные в работе и более быстродействующие технологии.
Механизмы доступа к базам данных снижают сложность обмена информацией с базами, однако интерпретация результатов их работы также достаточно трудоемка. Поэтому реализованы наборы компонентов, предназначенные для взаимодействия с механизмами обмена.
Таким образом, можно выделить несколько субъектов, участвующих в движении информации между базой данных и приложением (например, пользовательским интерфейсом):
1) интерфейсная часть приложения или его программная часть, манипулирующая информацией, хранимой в базе данных.;
2) компоненты, обеспечивающие связь приложения с механизмом доступа к базе данных;
Базы данных. 1,2,3 нормальные формы.
3) механизм доступа к базе данных;
На рис. 1 представлена схема движения информации между приложением и базой данных.
Рис. 1. Движение информации от базы данных к приложению
Из рисунка видно, что при разработчике приложения-СУБД программист работает с наборами компонентов, предназначенных для обмена информацией с базами данных и ее отображения. В зависимости от выбранного механизма доступа к базе данных некоторые наборы компонентов могут не использоваться, однако все они, вне зависимости от особенностей используемой базы данных и механизма доступа к ней, имеют схожие свойства и методы.
ODBC (Open Database Connectivity – открытый доступ к базам данных) – разработанный компанией Microsoft универсальный интерфейс программирования приложений для доступа к базам данных.
Основной целью разработки протокола ODBC считается стандартизация механизмов взаимодействия с различными СУБД. Основная проблема, связанная с разработкой приложений, взаимодействующих с базами данных на основе специальных SQL API, состояла в том, что каждая СУБД имела собственный программный интерфейс доступа, каждый из них имел свои особенности и функционировал не совсем так, как другие. В связи с этим разработка приложения существенно зависела от используемой СУБД. Компания Microsoft сделала важный шаг для решения этой проблемы. Основная идея заключалась в разработке универсального интерфейса на уровне семейства операционных систем Windows, который мог бы быть поддержан в разных СУБД.
Рассмотрим кратко структуру программного обеспечения ODBC:
- интерфейс вызовов функций ODBC: это так называемый верхний уровень ODBC, содержащий API, который и используется непосредственно приложениями. Данный API реализован в виде библиотеки динамической компоновки Dll и входит в состав операционной системы Windows;
- драйверы ODBC: это так называемый нижний уровень ODBC, содержащий набор драйверов для СУБД, поддерживающих протокол ODBC. В рамках технологии для каждой СУБД может быть разработан соответствующий ODBC-драйвер, который будет являться промежуточным звеном между прикладной программой и СУБД, транслируя вызовы функций СУБД в вызовы внутренних специализированных функций СУБД. Таким образом решается проблема стандартизации. Для многих современных СУБД существуют специализированные драйверы ODBC, отдельно устанавливаемые в операционную систему;
- диспетчер драйверов ODBC: данный программный механизм представляет средний уровень ODBC, управляя процессом загрузки необходимых драйверов.
Схема выполнения программы с использованием протокола ODBC для доступа к данным приводится на рис.2. Рис. 2. Схема выполнения программы с использованием протокола ODBC для доступа к данным Операционная система Windows имеет в своем составе несколько механизмов доступа к базам данных: ODBC, OLE DB и ADO. Технология ODBC (от англ. Open Database Connectivity – открытый механизм доступа к базам данных1 ) — это компонент операционной системы Windows, предназначенный для унификации доступа к информации, хранящейся в базах данных различных видов. ODBC состоит из набора драйверов, осуществляющих операции обмена с определенными базами данных, и менеджера драйверов, осуществляющего передачу запросов от приложения к драйверу и передачу информации от драйвера к приложению (рис. 3).



Базы данных SQL уроки для начинающих. SELECT, JOINS, GROUP BY, INSERT, UPDATE, WHERE
Источник: studfile.net
Обзор основных технологий доступа к базам данных
Взаимодействие приложения с БД может быть организовано различными способами. Первоначально, как основные, преобладали способы, основанные на API (Application Programming Interface) библиотек СУБД (позже, дополнительно, и СOМ объектов), входящих в состав клиентского программного обеспечения, устанавливаемого на компьютерах пользователей. Как правило, клиентское программное обеспечение включало в себя и собственную среду разработки прикладного программного обеспечения. Это приводило к тому, что замена СУБД требовала значительной переделки кода приложения. Как результат — в настоящее время главенствующими становятся универсальные механизмы доступа к данным.
Универсальные механизмы доступа к данным обычно реализованы в виде библиотек и дополнительных модулей (драйверов или провайдеров). Библиотеки содержат определенный стандартный набор классов, методов, параметров, и обеспечивают стандартный интерфейс доступа к данным. Дополнительные модули реализуют непосредственное обращение к функциям клиентского API конкретных СУБД.
Причем, эти дополнительные модули, устанавливаются исходя из текущей потребности. Если, например, приложение работало с использованием ADO (см. ниже) и, допустим, использовало визуальный компонент Ado Table — то теперь, при необходимости переноса БД с MySQL на Postgres, достаточно будет только установить соответствующий драйвер и изменить строку Connection в параметрах компонента. Изменение кода приложения не требуется.
Универсальные методы не лишены недостатков (снижение производительности, поставка соответствующих драйверов и их настройка и т. п.), но все это не идет в сравнение с их основным достоинством, универсальностью. Нельзя забывать и о том, что они значительно увеличивают производительность труда программиста, так как отпадает необходимость в изучении специфических интерфейсов и специфических средств разработки.
Среди универсальных методов доступа к данным наиболее распространены в настоящее время:
ODBC — Open Database Connectivity.
OLE DB — Object Linking and Embedding Database.
ADO — ActiveX Data Objects.
BDE — Borland Database Engine.
ADO.NET — ActiveX Data Objects технологии NET.
ODBC (Microsoft) — механизм взаимодействие с реляционными базами данных. Для обеспечения доступа к БД необходимы клиентская часть СУБД, ODBC-драйвер для доступа к этой СУБД (или только драйвер для некоторых СУБД) и соответствующая настройка ODBC на компьютере (обычно имя драйвера, пользователя, имя базы, пароль доступа и указание некоторых параметров драйвера).
Драйвер, при выполнении приложения, загружается в адресное пространство приложения и используется для доступа к БД. Для каждой СУБД используется собственный ODBC-драйвер. ODBC API стандартизован. В визуальных средах разработки теперь достаточно помещения на форму соответствующего компонента, указания источника данных ODBC, имени таблицы и связь с базой данных установлена или через клиентскую часть СУБД или через соответствующий драйвер.
OLE DB (Microsoft) — механизм работы с самыми разнообразными источниками данных (в отличии от ODBC — где только работа с реалиционными БД) на базе COM-интерфейса. OLE DB определяет набор COM-интерфейсов (Component Object Model), включающих различные сервисы однотипного доступа к различным данным (в том числе и к нереляционным БД, например, к папкам систем электронной почты или просто файлам), обеспечивая при этом поддержку работы с наборами данных и иерархическими наборами записей, подключенными непостоянно к сети. Для доступа к БД требуется установка OLE DB провайдера для СУБД (DLL СУБД загружается при выполнении приложения в его адресное пространство). Кроме того, фирмой разработан специальный провайдер (Microsoft OLE DB Provider for ODBC Drivers), который может работать не через API клиентской части СУБД, а через интерфейс ODBC API.
ADO (Microsoft) — своеобразная надстройка над OLE DB (использует библиотеки OLE DB) — дополнительный набор библиотек, содержащих COM-объекты, реализующие интерфейс доступа к данным. Этот набор библиотек первоначально включал две объектные технологии Microsoft: Data Access Objects (DAO) и Remote Data Objects (RDO) — два различных механизма доступа к локальным и удаленным базам данных соответственно.
Как ответ на потребность создания единой технологии, обеспечения единого подхода при работе с БД и единого интерфейса для доступа к локальным и удаленными данным, появилась технология ADO. ADO является более дружественной оболочкой базовой технологии OLE DB и позволяет работать с любыми базами данных.
BDE (Borland) — универсальный механизм доступа к данным, базирующийся на двух группах библиотек-драйверов (SQL Links — для серверных СУБД и ODBS Links — для серверных и автономных СУБД). Эти библиотеки позволили применять стандартный набор функций для доступа к данным dBase, Access, FoxPro, ODBC-источников, а также большинства серверных СУБД. BDE поддержан на уровне компонент в визуальных средах разработки фирмы Borland. Реализация механизма позволяет функциям приложения обращаться к функциям клиентского API или ODBC API, а также непосредственно манипулировать файлами данных некоторых СУБД. Для доступа к базе данных с помощью BDE на компьютере должны быть установлены библиотеки BDE общего назначения (обычно устанавливаются вместе со средой разработки и затем включаются в.exe файл), а также BDE-драйвер для данной СУБД.
ADO.NET (Microsoft) — технология работы с базами данных в three-tier (многоярусной архитектуре), когда соединение с базой данных устанавливается лишь на период выполнения операций с БД (как правило кратковременных). Ее появление связано с необходимостью разрешения противоречия между ростом числа обращений к БД (особенно в БД интернет-серверов) и невозможностью базы данных поддерживать неограниченное число активных соединений. ADO.NET призвана решить эти и другие проблемы и вместе с тем сохранить удобство и простоту программирования. ADO.NET, в ее современном виде — иерархический набор объектов, построенный в соответствии с новой идеологией базовых библиотек классов и смены протоколов COM на.NET.
Основы технологии ADO.NET
Как отмечено выше, в ADO.NET используется модель доступа, при которой соединение с БД устанавливается лишь на короткое время, когда необходимо проводить какую либо операцию по обмену информацией с базой данных. Естественно, такая технология не является эффективной для режимов работы, когда приложение проводит частые и объемные изменения содержания записей в БД. Для данного случая, более отвечающими требованиям, как и обычно, являются традиционные методы доступа — ODBC, ADO.
Функциональность ADO.NET, предоставляемая разработчикам приложений, аналогична функциональности ADO, предоставляемой разработчикам COM, различие заключается в способе манипулирования данными.
Компоненты ADO.NET позволяют отделить доступ к данным от их обработки. Разделение выполняется с помощью двух основных компонентов ADO.NET (Рис.1.):
провайдер данных.NET Framework
Рис.1. Архитектура ADO.NET
Провайдер (поставщик) данных.NET Framework представляет собой набор компонентов, это:
Connection — компонент для подключения к источнику данных;
Command — компонент для обеспечения выполнения команд в БД, изменения данных, запуска хранимых процедур, отправки и получения значений параметров;
DataReader — компонент для создания высокопроизводительного потока данных от источника данных;
DataAdapter — компонент для обеспечения взаимодействие объекта DataSet с источником данных.
На Рис.1. изображен один провайдер данных. На самом деле их пять:
Провайдер SQL Server.NET. Он обеспечивает связь с SQL серверами. Он имеет библиотеки, позволяющие выполнять прямое взаимодействие с SQL серверами через протокол Tabular Data Stream (TDS).
Провайдер данных OLE DB.NET необходим для организации взаимодействия с отличными от SQL Server базами данных (Oracle, DB2). Провайдер использует OLE DB для соответствующих баз данных.
ODBC.NET. Предоставляет доступ к любому источнику данных, имеющему драйвер ODBC.
Провайдер Oracle. Предоставляет оптимизированный под Net доступ к Oracle.
Провайдер SQL ServerCE для доступа к базам данных SQL Server CE из устройств, базирующихся на Windows CE и расположенных в управляемой среде.
Данные, полученные с помощью компонент провайдера, либо непосредственно обрабатываются, либо помещаются в объект DataSet.
Объект DataSet является основой поддержки многоуровневой архитектуры данных и механизмов, позволяющих работать с отключением от источников данных. DataSet представляет собой находящийся в памяти объект со снимком реальных данных БД. Он может включать таблицы (DataTableCollection), отношения между таблицами (DataRelationCollection).
Для этого DataSet содержит ноль или более таблиц, представленных объектами DataTable, ноль или более отношений — объекты DataRelation (ключевая информация таблиц, хранящаяся в виде имя отношения, имена связанных таблиц и столбцов). Кроме того, как сам DataSet, так и некоторые его дочерние объекты имеют свойства ExtendedProperties — коллекция PropertyCollection, в которых можно сохранять различную информацию (в том числе и SQL операторы). Коллекция ExtendedProperties хранится со сведениями о схеме DataSet (как и объекты DataTable и DataColumn). Объектная модель DataSet показана на Рис.2.
Рис.2. Объектная модель DataSet
Источник: studopedia.su
Основные элементы клиентских программ доступа к базам данных
К основным элементам клиентских программ доступа к БД относится интерфейс пользователя (с элементами управления), справочная система, инсталляционный пакет, действия и связанные с ними компоненты, файлы и устройства ввода-вывода и т. д. Рассмотрим некоторые из них на примере MS Windows.
Интерфейс пользователя
Элементы управления.
Суть пользовательского интерфейса составляют элементы управления. Всеми программами нужно управлять более или менее единообразно, поэтому в составе ОС имеется набор типовых кнопок, редактирующих элементов, списков выбора и т. п., перечень этот постоянно пополняется; содержатся они в библиотеке ComCtl32.dll. Во-первых, с новыми версиями продуктов фирмы Microsoft поставляются новые элементы управления; во-вторых, на ниве их создания подвизаются многочисленные сторонние фирмы, оформляющие свои элементы управления в виде элементов ActiveX (файлов OCX). И, в-третьих, достаточное количество элементов написано прямо в Delphi — как в фирме Borland, так и независимыми разработчиками.
Элементам управления, пришедшим из состава Windows, начиная с Delphi 3, отведена отдельная страница в Палитре компонентов под названием Win32. Эти элементы управления не являются ActiveX. Это — обычные специализированные разновидности окон Windows, установка свойств которых происходит посредством посылки специализированных сообщений.
Полная документация по всем сообщениям и применяемым в них константам и структурам есть в MSDN. Для большинства сообщений предусмотрены специальные функции оболочки, которые описаны в специальном модуле (CommCtrl.pas). Сами «дельфийские» классы компонентов работают с их использованием.
В Палитре компонентов имеется два элемента (компонента) управления, обеспечивающих создание многостраничных блокнотов — TTabControl и TPageControl. Переключение между страницами осуществляется с помощью закладок. Закладки могут выглядеть как «настоящие» в бумажном блокноте, а могут быть похожи на стандартные кнопки Windows. Кстати, сама Палитра компонентов Delphi является примером использования такого элемента управления. Механизмы работы отдельных страниц у каждого компонента свои.
В свою очередь, панель инструментов получила развитие с появлением стандартного элемента управления TToolBar, который объединяет расположенные на нем кнопки и другие элементы управления и централизованно управляет ими.
С ростом возможностей пользовательского интерфейса Windows все больше и больше элементов управления стали оснащаться значками и картинками. И вот для централизованного управления этими картинками появился элемент управления TImageList. Он представляет собой оболочку для создания и использования коллекции одинаковых по размеру и свойствам изображений.
На этапе разработки ее «начиняют» картинками (с Delphi для этих целей поставляется подборка, находящаяся в каталоге Images). Компонент TImageList обладает двумя свойствами — Images и Imagelndex. Первое указывает на список (компонент TImageList), второе — на конкретную картинку в этом списке.
На базе компонентов TTreeView и TListView создано ядро пользовательского интерфейса — оболочка Explorer, да и большинство других утилит Windows 98 или Windows 2000. Они включены в библиотеку ComCtl32.dll и доступны программистам.
Компонент TTreeView называют деревом (рис. 4.24). Компонент TTreeView — правопреемник компонента TOutiine, разработанного Borland еще для Delphi 1; предназначен для отображения иерархической информации. Его «сердцем» является свойство property Items: TTreeNodes или это список всех вершин дерева, причем список, обладающий дополнительными полезными свойствами. Каждый из элементов списка — это объект типа TTreeNode.
Рис. 4.24. Внешний вид компонента TTreeView
Для работы с системным реестром используется объект VCL TRegistry, удачно инкапсулирующий все предназначенные для этого функции Windows API. В обработчике события OnCreate главной формы создается объект Reg, а также к списку Listviewl добавляются два заголовка (свойство Columns).
Календарь. Выбор даты — одна из часто используемых операций при вводе данных. Для облегчения этого действия разработчики Borland создали два новых элемента управления. Компонент TMonthCaiendar инкапсулирует календарь, панель которого содержит типовую таблицу на один месяц. Компонент TDateTimePicker совмещает календарь с однострочным текстовым редактором, позволяя вводить даты путем выбора из календаря.
Компонент TMonthCaiendar представляет собой панель с календарем на один месяц (рис. 4.25). Назначение свойств компонента, отвечающих за внешний вид и управление календарем, достаточно прозрачно и не требует особенных комментариев.
Рис. 4.25. Компонент TMonthCalendar
Сам календарь содержит в верхней части месяц и год, а расположенные слева и справа кнопки позволяют переходить к следующему и предыдущему месяцу. Красная окружность определяет текущую дату. Синий круг означает выбранную пользователем дату. При увеличении размеров в элементе управления отображается целое число календарей для месяцев, ближайших к текущему.
Панель состояния предназначена для отображения справочной информации различного рода. Панель состояния инкапсулирована в компоненте TStatusBar. Обычно панель состояния размещается в нижней части окна. Поэтому при переносе на форму свойство Align всегда имеет значение alBottom. Панель состояния можно разделить на произвольное число самостоятельных частей.
Каждая часть описывается объектом TStatusPanel.
Выпадающий список (расширенный комбинированный список TComboBoxEx) знаком пользователям со времен Windows 95 (например, список всех элементов оболочки Shell: папки Му Computer, Му Documents и т. п.). Соответствующий элемент управления появился в библиотеке ComCtl32 несколько позже, а в компонент он превратился только в Delphi 7.
Источник: studref.com