Ado технология доступа к данным реферат

Введение

Borland
Delphi

интегрированная
среда разработки ПО для
Microsoft
Windows на языке
Delphi
(ранее
носившем название Object
Pascal),
созданная первоначально фирмой Borland
и на данный
момент принадлежащая и разрабатываемая
Embarcadero
Technologies.

Система
программирования Borland
Delphi
включает
в себя развитые средства для разработки
приложений баз данных. С помощью этих
средств можно создавать полноценные
клиентские приложения баз данных (БД).
Среди возможностей таких приложений
можно назвать:

  • доступ
    к локальным и удаленным БД;

  • представление
    данных;

  • формирование
    отчетов;

  • оперативный
    анализ данных.

Доступ
к БД можно осуществлять с помощью
различных технологий. В Borland
Delphi 7.0
доступны
следующие технологии:

  1. BDE
    (Borland Database Engine)
    .
    Базовая технология доступа к БД от
    фирмы Borland. Позволяет получать доступ
    к реляционным БД
    с помощью специальных BDE
    драйверов или через ODBC
    драйверы. Исторически является первой
    технологией доступа к БД в среде Borland
    Delphi.

  2. DbExpress.
    Более новая и совершенная технология
    доступа к БД от фирмы Borland. Появилась в
    6-й версии Borland
    Delphi
    . По
    сравнению с BDE обеспечивает более
    быстрый и удобный доступ к данным.

  3. ADO
    (ActiveX Database Objects).

    Технология доступа к данным от фирмы
    Microsoft. В свою очередь базируется на
    технологии OLE-DB. Обеспечивает удобный
    и надежный доступ к данным, хотя и
    несколько более медленный, чем в
    технологиях BDE и dbExpress. Хорошо подходит
    для работы с системами управления
    базами данных (СУБД) от фирмы Microsoft (MS
    Access, MS SQL Server).

  4. InterBase.
    Специализированная технология доступа
    к серверу БД Borland InterBase. При работе с
    этой СУБД обеспечивает наивысшую
    производительность по сравнению с
    другими технологиями.

Кроме
того, сторонними фирмами разработано
множество других специализированных
технологий доступа к БД конкретных
СУБД, таких как Oracle, DB2 и других. Следует
отметить, что принципы работы с БД с
использованием любой из перечисленных
технологий практически одинаковы.
Поэтому получив навыки работы с одной
из них, перейти к другим технологиям не
составляет никакого труда.

BDE

Процессор
баз данных Borland Database Engine представляет
собой набор динамических библиотек,
которые, собственно, и называются
процессором БД. Их функции позволяют
не только обращаться к данным, но и
эффективно управлять ими на стороне
приложения. В процессе работы библиотеки
используют вспомогательные файлы
языковой поддержки и информацию о
настройках среды. Перечисленные функции
реализованы в динамических библиотеках.

В
составе BDE поставляются стандартные
драйверы, обеспечивающие доступ к СУБД
Paradox, dBASE, FoxPro и текстовым файлам. Локальные
драйверы (рис. 1) устанавливаются
автоматически совместно с ядром
процессора. Один из них можно выбрать
в качестве стандартного драйвера,
который имеет дополнительные настройки,
влияющие на функционирование процессора
БД.

Рисунок
1: Структура процессора баз данных ВDЕ

Доступ
к данным серверов SQL обеспечивает
отдельная система драйверов — SQL Links. С
их помощью в Delphi можно без особых проблем
разрабатывать приложения для серверов
Oracle 8, Informix, Sybase, DB2 и, естественно,
InterBase. Эти драйверы необходимо устанавливать
дополнительно. Помимо этого, в BDE имеется
очень простой механизм подключения
любых драйверов ODBC (к примеру, Microsoft
Access) и создания на их основе сокетов
ODBC.

Однако
BDE не претендует на всеобъемлющую
универсальность и имеет некоторые
недостатки. Это, например, снижение
скорости работы приложения, недостатки
реализации некоторых драйверов и т. д.
В документации к Delphi 7 содержится
предупреждение, что после 2002 года фирма
Borland перестанет поддерживать BDE и
рекомендует использовать технологию
dbExpress, которая будет рассмотрена позже.

Любое
приложение Delphi, работающее с базами
данных и написанное с использованием
стандартных компонентов доступа к
данным, обращается к данным и получает
результат при помощи BDE. При этом механизм
доступа к данным использует вызовы
функций из API BDE.

Достаточно
сложно представить себе такую ситуацию,
когда возникает необходимость создания
приложения, использующего только функции
BDE, без применения компонентов доступа
к данным VCL. Между тем, включение в
программный код отдельных функций API
BDE оправдано.

Все
обращения из приложения к таблицам
одной базы данных осуществляются через
одно соединение, на которое замыкаются
все компоненты доступа к данным, имеющие
соответствующие значения свойства
DatabaseName.

Все
управление одиночным соединением с
какой-либо базой данных в BDE осуществляется
компонентом TDatabase.
В процессе работы компонент активно
использует параметры псевдонимов и
драйверов BDE. Обычно компонент TDatabase
размешается в модуле данных приложения.

Компоненты
доступа к данным, используемые при
разработке приложений BDE, располагаются
на странице BDE Палитры компонентов. Их
общими предками являются классы
TBDEDataSet и TDBDataSet. Они обеспечивают
работоспособность основных компонентов
доступа к данным BDE — TTable, TQuery, TstoredProc.

  1. Класс
    TBDEDataSet
    является
    потомком класса TDataSet, его значение
    трудно переоценить: именно TBDEDataSet
    обеспечивает работоспособность
    важнейших механизмов набора данных за
    счет обращения к функциям BDE. Например,
    класс TBDEDataSet перекрывает абстрактные
    методы своего предка TDataSet, отвечающие
    за такие важнейшие операции, как чтение
    данных и сохранение изменений в базе
    данных, навигация по записям набора
    данных, фильтрация.

Класс
TDBDataSet
является непосредственным предком
основных компонентов доступа к данным
TTаblе, TQuery и TstoredProc. Новые свойства и
методы класса обеспечивают соединение
набора данных с базой данных и используют
функции BDE.

Компонент
TTаblе
инкапсулирует таблицу реляционной базы
данных, причем независимо от типа базы
данных. Для доступа к данным компонент
использует функции BDE.

Компонент
TQuery
реализует все основные функции
стандартного компонента запроса. Прямым
предком компонента является класс
TDBDataSet.

Компонент
TStoredProc
обеспечивает использование в приложениях
BDE хранимых процедур. Прямым предком
компонента является класс TDBDataSet. Поэтому
результатом выполнения хранимой
процедуры может быть не только одиночный
результат, но и полноценный набор данных.

InterBase

На
странице InterBase
Палитры
компонентов содержатся компоненты
доступа к данным, адаптированные для
работы с сервером InterBase и объединенные
названием InterBase Express. Компоненты из
набора InterBase Express предназначены для
работы с сервером InterBase версии не ниже
5.5. Их преимущество заключается в
реализации всех функций за счет прямого
обращения к API сервера InterBase. Благодаря
этому существенно повысилась скорость
работы компонентов.

Новые
компоненты предоставляют разработчику
новые возможности. Среди них:

  •  улучшенное
    управление транзакциями (для этого
    теперь предназначен отдельный компонент
    TiBTransaction);

  •  новые
    компоненты доступа к данным, позволяющие
    лучше решать распространенные задачи
    программирования (компоненты TiBDataSet,
    TIBSQL);

  •  возможность
    получения сведений о состоянии базы
    данных без прямого обращения к ее
    системным таблицам (компонент
    TiBDatabaseinfo);

  •  отслеживание
    состояния процессов выполнения запросов
    (компонент TIBSQLMonitor).

Для
компонентов InterBase Express соединение с
сервером БД осуществляет компонент
TIBDatabase.

Механизм
доступа к данным InterBase Express использует
для обращений к серверу возможности
клиентского ПО InterBase, которое должно
быть инсталлировано на компьютере. При
этом не требуется использовать BDE или
любой другой механизм доступа к данным.
Но в результате все компоненты InterBase
Express, инкапсулирующие набор данных,
должны обращаться к базе данных только
через компонент соединения TIBDatabase. На
самом деле эта особенность не является
недостатком в клиентских приложениях,
т.к. организация соединения через один
специализированный компонент всячески
приветствуется и является хорошим тоном
в программировании.

Компонент
TiBDatabase позволяет выполнять некоторые
операции с метаданными базы данных.

В
компоненте TiBDatabase отсутствуют средства
управления транзакциями, которые
вынесены в отдельный компонент
TiBTransaction.

Компонент
TIBTransaction
инкапсулирует средства управления
транзакцией при работе с сервером
InterBase.

Так
как компоненты InterBase Express используют
для получения набора данных собственный
механизм, то иерархия классов-предков
включает только обязательный для всех
наборов данных TDataSet класс TiBCustomDataSet,
который, собственно, и инкапсулирует
механизм доступа InterBase Express.

Для
взаимодействия с сервером компоненты
InterBase Express используют два класса, TIBXSQLDA
и TIBXSQLVAR, которые инкапсулируют важные
структуры API InterBase. Эти структуры
обеспечивают передачу серверу параметров
запроса и возвращение результата
выполнения запроса.

Возможности
компонентов TIBTable, TIBQuery, TIBStoredProc,
TIBUpdateSQL мало чем отличаются от стандартных.

Компонент
TIBTable
реализует все возможности стандартного
компонента, инкапсулирующего таблицу,
плюс несколько дополнительных полезных
свойств и методов.

Компонент
TIBQuery
выполняет все стандартные функции
компонента запроса и наследует возможности
класса TiBCustomDataSet.

Компонент
TIBStoredProc
полностью соответствует стандартному
прототипу.

Компонент
TIBDataSet
предназначен
для представления в приложениях наборов
данных от сложных запросов. При этом
набор данных остается редактируемым.
Это достигается возможностью задать
дополнительные запросы на удаление,
изменение и добавление данных. Аналогичным
образом работает стандартный компонент
TUpdateSQL. Однако в компоненте TIBDataSet
интегрированы одновременно и сам
основной запрос, и вспомогательные
запросы.

Компонент
TIBSQL
предназначен для быстрого выполнения
запросов SQL, поэтому не обеспечивает
связи с компонентами представления
данных.

Клиентское
приложение Delphi, работающее с сервером
InterBase, имеет возможность отслеживать
события, происходящие в базе данных и
вызываемые другими процессами или
приложениями. Для этого используется
компонент TiBEvents.
Он позволяет определить список необходимых
событий и предоставляет разработчику
простой механизм отслеживания возникающих
на сервере событий.

Компонент
TiBDatabaseinfo
предоставляет информацию о текущем
состоянии базы данных. Он обладает
большим числом свойств и методов,
содержащих разнообразные сведения о
состоянии БД. Компонент очень прост в
применении.

Компонент
TiBSQLMonitor
отслеживает выполнение запросов на
сервере. Он позволяет получать в
клиентском приложении сообщения от
сервера о выполняемых им операциях.

dbExpress

Одной
из проблем различных технологий доступа
к данным, используемым в приложениях
Delphi, является трудность распространения
готовых приложений. Для BDE требуется
отдельная установка, которая занимает
порядка 15 Мбайт дискового пространства,
а также специальная настройка псевдонимов.
ADO предустановлена в операционной
системе, но нуждается в настраиваемых
провайдерах данных. При необходимости
обновить версию ADO, дистрибутив вашего
приложения “потяжелеет” более чем
на 2 Мбайт.

Новая
технология доступа к данным dbExpress
обеспечивает взаимодействие приложения
с серверами баз данных. Драйверы dbExpress
используют для получения данных
исключительно запросы SQL. При этом на
клиентской стороне отсутствует
кэширование данных, вследствие этого
здесь применяются исключительно
однонаправленные курсоры и отсутствует
возможность прямого редактирования
наборов данных.

Для
функционирования компонентов dbExpress
необходим только один драйвер, который
взаимодействует напрямую с клиентским
программным обеспечением для выбранного
сервера БД. В поставку входят драйверы
для первых четырех из списка серверов
баз данных: DB2, InterBase, MySQL, Oracle и Microsoft SQL
Server 2000.

Драйверы
реализованы в виде динамических
библиотек, а при необходимости могут
быть прикомпилированы непосредственно
к исполняемому файлу приложения. Поэтому
проблема распространения совместно с
приложением средств доступа к данным
в случае с dbExpress снимается полностью.
Естественно, на компьютере должно быть
установлено клиентское ПО соответствующего
SQL сервера.

Кроме
того, технология dbExpress обеспечивает
доступ к данным в кроссплатформенных
приложениях для Windows и Linux, т. к. применяется
и в Delphi и Kylix, а способы ее применения
идентичны.

Таким
образом, технология dbExpress является
наилучшим решением для приложений, в
которых необходим быстрый и необременительный
просмотр данных серверов SQL. И вряд ли
он подойдет для сложных клиент-серверных
или многоуровневых приложений,
обеспечивающих серьезную работу с
данными.

Технология
dbExpress представляет собой совокупность
драйверов, компонентов, инкапсулирующих
соединения, транзакции, запросы и наборы
данных, а также интерфейсов, обеспечивающих
универсальный доступ к функциям
dbExpress.

Компоненты
dbExpress располагаются в Палитре компонентов
на одноименной странице.

Для
создания соединения с сервером в рамках
технологии dbExpress приложение должно
использовать компонент TSQLConnection.
Это обязательный компонент, все остальные
компоненты связаны с ним и используют
его для получения данных. Компонент
TSQLConnection
позволяет выполнять некоторые операции
с подключенными наборами данных и
следить за их состоянием.Подобно своим
аналогам в BDE и ADO компонент TSQLConnection
поддерживает механизм транзакций и
делает это сходным образом.

Набор
компонентов dbExpress, инкапсулирующих
набор данных, вполне обычен и сравним
с аналогичными компонентами BDE, ADO,
InterBase Express.
Это
компоненты TSQLDataSet, TSQLTable, TSQLQuery,
TSQLStoredProc. Компонент TSimpleDataSet также
относится к рассматриваемой группе, но
т. к. он обладает рядом специфических
возможностей, его описание вынесено в
отдельный пункт.

Необходимость
создания легкой технологии доступа к
данным, какой является dbExpress, наложила
на эти компоненты ряд ограничений. Хотя
общим предком всех рассматриваемых
здесь компонентов является класс
TDataSet, который обладает полным
инструментарием для работы с набором
данных, компоненты dbExpress используют
только однонаправленные курсоры и не
позволяют редактировать данные.
Однонаправленные курсоры ограничивают
навигацию по набору данных и обеспечивают
перемещение только на следующую запись
и возврат на первую. Также здесь недоступны
любые операции, требующие буферизации
данных — это поиск, фильтрация, синхронный
просмотр.

Таким
образом, для выключения ряда механизмов
класса TDataSet понадобился еще один
промежуточный класс TCustomSQLDataSet,
который является общим предком для
компонентов, инкапсулирующих запросы,
таблицы и хранимые процедуры. Его задачей
является не столько внесение новой
функциональности, сколько корректное
ограничение возможностей, заложенных
в TDataSet.

Отображение
данных при помощи компонентов со страницы
Data Controls
также
ограничено. Нельзя использовать
компоненты TDBGrid и TDBCtrlGrid, а в компоненте
TDBNavigator не забудьте отключить кнопки
возврата на одну позицию назад и перехода
на последнюю запись. Также ничего
хорошего не получится из попытки
применить компоненты синхронного
просмотра. Остальные компоненты можно
использовать обычным способом.

Компонент
TSQLDataSet
является
универсальным и позволяет выполнять
запросы SQL (подобно TSQLQuery), просматривать
таблицы целиком (подобно TSQLTable) или
выполнять хранимые процедуры (подобно
TSQLStoredProc). Для определения режима работы
компонента используется свойство
ConimandType.

Компонент
TSQLTable
предназначен для просмотра таблиц
целиком и по основным функциям подобен
своим аналогам TTаblе, TADOтаblе,TIBTаblе. Для
получения табличного набора данных
компонент TSQLTable самостоятельно формирует
запрос на сервер, используя для этого
возможности, унаследованные от предка
TCustomSQLDataSet.

Компонент
TSQLQuery
повторяет
функциональность своих аналогов в BDE,
ADO, InterBase Express и позволяет выполнять на
сервере запросы SQL клиента.

Компонент
TSQLStoredProc
инкапсулирует функциональность хранимых
процедур для их выполнения в рамках
технологии dbExpress. Он подобен другим
своим аналогам.

Компонент
TSimpleDataSet
обеспечивает
кэширование полученных данных и сделанных
изменений на стороне клиента и последующую
передачу их на сервер для фиксации. В
отличие от компонента TClientDataSet, основным
назначением которого является обслуживание
набора данных, полученного от удаленного
сервера при помощи серверных компонентов
DataSnap, компонент TSimpleDataSet призван быть
лишь средством редактирования набора
данных в технологии dbExpress. Компонент
использует двунаправленный курсор и
позволяет редактировать данные, правда
только в режиме кэширования. Таким
образом, компонент TSimpleDataSet позволяет
исправить основные недостатки технологии
dbExpress.

Технология
dbExpress основана на использовании четырех
базовых интерфейсов, методы которых
применяются во всех компонентах
dbExpress. При серьезной работе с технологией
или при проектировании собственных
компонентов информация об этих интерфейсах
будет полезна.

Интерфейс
ISQLDriver
инкапсулирует всего три метода для
обслуживания драйвера dbExpress. Экземпляр
интерфейса создается для соединения и
обеспечивает его связь с драйвером.

Интерфейс
ISQLConnection
обеспечивает
работу соединения. Он передает запросы
серверу и возвращает результаты, создавая
экземпляры интерфейса iSQLCommand; управляет
транзакциями; поддерживает передачу
метаданных при помощи интерфейса
ISQLMetaData.

Интерфейс
isQLCommand
обеспечивает функционирование запроса
dbExpress. Компоненты dbExpress, работающие с
наборами данных, используют его для
реализации своих методов.

Интерфейс
ISQLCursor
обладает совокупностью методов, которые
помогут получить информацию о полях
курсора, а также значения этих полей.
Все эти методы имеют одинаковое
представление. Для получения нужной
информации необходимо задать порядковый
номер поля в структуре курсора.

Наряду
с обычными методами отладки исходного
кода, в dbExpress существует возможность
контроля запросов, проходящих на сервер
через соединение. Для этого используется
компонент TSQLMonitor.

ADO

Наряду
с традиционными инструментами доступа
к данным Borland Database Engine и ODBC в приложениях
Delphi можно применять технологию Microsoft
ActiveX Data Objects (ADO).

Технология
ADO завоевала популярность у разработчиков
благодаря универсальности — базовый
набор интерфейсов OLE DB имеется в каждой
современной операционной системе
Microsoft. Поэтому для обеспечения доступа
приложения к данным достаточно лишь
правильно указать провайдер соединения
ADO и затем переносить программу на любой
компьютер, где имеется требуемая база
данных и, конечно, установленная ADO.

В
Палитре компонентов Delphi есть страница
ADO, содержащая набор компонентов,
позволяющих создавать полноценные
приложения БД, обращающиеся к данным
через ADO.

Технология
Microsoft ActiveX Data Objects обеспечивает универсальный
доступ к источникам данных из приложений
БД. Такую возможность предоставляют
функции набора интерфейсов, созданные
на основе общей модели объектов СОМ и
описанные в спецификации OLE DB.

Технология
ADO и интерфейсы OLE DB обеспечивают для
приложений единый способ доступа к
источникам данных различных типов (рис.
2). Например, приложение, использующее
ADO, может применять одинаково сложные
операции и к данным, хранящимся на
корпоративном сервере SQL, и к электронным
таблицам, и локальным СУБД. Запрос SQL,
направленный любому источнику данных
через ADO, будет выполнен.

Рисунок
2: Схема доступа к данным через ADO

OLE
DB представляет собой набор специализированных
объектов СОМ, инкапсулирующих стандартные
функции обработки данных, и специализированные
функции конкретных источников данных
и интерфейсов, обеспечивающих передачу
данных между объектами.

Объекты
OLE DB создаются и функционируют так же,
как и другие объекты СОМ. В результате
приложение обращается не прямо к
источнику данных, а к объекту OLE DB, который
“умеет” представить данные (например,
из файла электронной почты) в виде
таблицы БД или результата выполнения
запроса SQL.

Технология
ADO в целом включает в себя не только сами
объекты OLE DB, но и механизмы, обеспечивающие
взаимодействие объектов с данными и
приложениями.

Такая
архитектура позволяет сделать набор
объектов и интерфейсов открытым и
расширяемым. Набор объектов и
соответствующий провайдер может быть
создан для любого хранилища данных без
внесения изменений в исходную структуру
ADO.

Так
как технология ADO основана на стандартных
интерфейсах СОМ, которые являются
системным механизмом Windows, это сокращает
общий объем работающего программного
кода и позволяет распространять
приложения БД без вспомогательных
программ и библиотек.

Спецификация
OLE DB различает следующие типы объектов:

  • Перечислитель
    (Enumerator) выполняет поиск источников
    данных или других перечислителей.
    Используется для обеспечения
    функционирования провайдеров ADO.

  • Объект-источник
    данных (Data Source Object) представляет хранилище
    данных.

  • Сессия
    (Session) объединяет совокупность объектов,
    обращающихся к одному хранилищу данных.

  • Транзакция
    (Trasaction) инкапсулирует механизм выполнения
    транзакции.

  • Команда
    (Command) содержит текст команды и обеспечивает
    ее выполнение. Командой может быть
    запрос SQL, обращение к таблице БД и т.
    д.

  • Набор
    рядов (Rowset) представляет собой совокупность
    строк данных, являющихся результатом
    выполнения команды ADO.

  • Объект-ошибка
    (Error) содержит информацию об исключительной
    ситуации.

Механизм
доступа к данным через ADO и многочисленные
объекты и интерфейсы реализованы в VCL
Delphi в виде набора компонентов, расположенных
на странице ADO.

Компонент
TADOConnection
вобрал возможности перечислителя,
источника данных и сессии с возможностями
обслуживания транзакций.

Текстовые
команды ADO реализованы в компоненте
TADOCommand.

Наборы
рядов (нотация Microsoft) можно получить при
помощи компонентов TADOTable,
TADOQuery,
TAOostoredProc.
Каждый из них реализует способ доступа
к конкретному типу представления данных
в хранилище.

Компоненты
доступа к данным ADO могут использовать
два варианта подключения к хранилищу
данных. Это стандартный метод ADO и
стандартный метод Delphi. В первом случае
компоненты используют свойство
connectionstring для прямого обращения к
хранилищу данных. Во втором случае
используется специальный компонент
TADOConnection, который обеспечивает расширенное
управление соединением и позволяет
обращаться к данным нескольким компонентам
одновременно.

Компонент
TADOConnection
предназначен для управления соединением
с объектами хранилища данных ADO. Он
обеспечивает доступ к хранилищу данных
компонентам ADO, инкапсулирующим набор
данных.

Применение
этого компонента дает разработчику ряд
преимуществ:

  • все
    компоненты доступа к данным ADO обращаются
    к хранилищу данных через одно соединение;

  • возможность
    напрямую задать объект провайдера
    соединения;

  • доступ
    к объекту соединения ADO;

  • возможность
    выполнять команды ADO;

  • выполнение
    транзакций;

  • расширенное
    управление соединением при помощи
    методов-обработчиков событий.

На
странице ADO Палитры компонентов Delphi,
кроме компонентов соединения есть
стандартные компоненты, инкапсулирующие
набор данных и адаптированные для работы
с хранилищем данных ADO (рис. 3). Это
компоненты:

  • TADODataSet
    — универсальный набор данных;

  • TАоотаblе
    — таблица БД;

  • TADOQuery
    — запрос SQL;

  • TAoostoredProc
    — хранимая процедура.

Как
и положено, для компонентов, инкапсулирующих
набор данных, их общим предком является
класс TDataSet, предоставляющий базовые
функции управления набором данных.

Рисунок
3: Иерархия классов наборов данных ADO

Компоненты
ADO обладают обычным набором свойств и
методов, а необходимый для доступа к
данным через ADO механизм наследуют от
своего общего предка — класса
TCustomADODataSet. Кроме этого, класс
TCustomADODataSet содержит ряд общих для всех
потомков свойств и методов.

Класс
TCustomADODataSet
инкапсулирует
механизм доступа к хранилищу данных
через ADO. Этот класс наполняет абстрактные
методы общего предка TDataSet функциями
конкретного механизма доступа к данным,
обладает дополнительными возможностями,
которые позволяют отслеживать состояние
каждой записи.

Как
уже рассказывалось выше, наборы данных
ADO используют на клиентской стороне
локальный кэш для хранения данных и
сделанных изменений. Благодаря наличию
этого кэша и появилась возможность
реализовать групповые операции. В этом
режиме все сделанные изменения не
передаются немедленно источнику данных,
а накапливаются в локальном кэше. Это
повышает скорость работы и позволяет
сохранять сразу группу модифицированных
записей.

Из
отрицательных сторон этого метода стоит
отметить, что пока изменения находятся
на клиенте, они недоступны другим
пользователям. В данной ситуации могут
возникать потери данных.

Многие
компоненты ADO, инкапсулирующие набор
записей, должны обеспечивать применение
параметров запросов. Для этого в них
используется специальный класс
TParameters.
Для каждого параметра из коллекции
класса TParameters создается отдельный класс
TParameter.
Этот класс является наследником класса
коллекции TCollection и инкапсулирует
индексированный список отдельных
параметров. Главное, для чего предназначен
класс TParameters,
— содержать список параметров. Класс
TParameter
инкапсулирует отдельный параметр.

Компонент
TADODataSet
предназначен
для представления набора данных из
хранилища данных ADO. Он прост в
использовании, имея только несколько
собственных свойств и методов, и применяет
функции своего предка — класса
TCustomADODataSet. Это единственный компонент
ADO, инкапсулирующий набор данных, для
которого опубликованы свойства,
позволяющие управлять командой ADO. В
результате компонент представляет
собой гибкий инструмент, который
позволяет (в зависимости от типа команды
и ее текста) получать данные из таблиц,
запросов SQL, хранимых процедур, файлов
и т. д.

Для
запросов SQL можно применять только язык
Data Manipulation Language (использовать только
SELECT).

Компонент
ТАDOTаblе
обеспечивает использование в приложениях
Delphi таблиц БД, подключенных через
провайдеры OLE DB. По своим функциональным
возможностям и применению он подобен
стандартному табличному компоненту.

В
основе компонента лежит использование
команды ADO, но ее свойства настроены
заранее и изменению не подлежат.

Компонент
TADOQuery
обеспечивает
применение запросов SQL при работе с
данными через ADO. По своей функциональности
он подобен стандартному компоненту
запроса.

1. Введение.

ADO — интерфейс, призванный обеспечить клиентское приложение доступом и возможностями манипулирования внешними данными. ADO является интерфейсом программного уровня к OLE DB (интерфейсом чрезвычайно удобным и высокопроизводительным). ADO и OLE DB составляют вместе технологию Универсального Доступа к Данным(UDA). При этом, являясь интерфейсом высокого уровня к OLE DB, ADO использует OLE DB поставщики данных (на данный момент это, в основном, провайдеры реляционных баз данных, хотя уже появляются поставщики для нереляционных источников данных и систем электронной почты).

Стоит отметить, что корпорация Microsoft во всеуслышанье заявляет, что ADO в ближайшее время заменит огромное разнообразие моделей и технологий доступа к данным, включая такие методы самой Microsoft, как DAO, RDO.

Примечание:

В дальнейшем в статье подразумевается, что читатель знаком с интерфейсами OLE DB, такими понятиями, поставщик и потребитель данных, имеет базовые знания по COM.

Также хотелось бы отметить, что данная статья явилась результатом попытки автора тщательно разобраться в технологии ADO и систематизировать полученные в итоге знания (а также сведения из лит.источников) и, естественно, статья не может на что-то претендовать (кроме критики J,) тем более на оригинальность.

2. Объектная модель ADO.

ADO состоит из следующих основных компонентов:

Объекты:

Connection. ADO использует объекты Connection для предоставления отдельных соединений с источником данных.

Command. Объекты Command используются для предоставления конкретных команд, выполняемых над источником данных. Эти объекты используются для отслеживания параметров, связанных с командой.

Parameter. Объекты Command содержат коллекцию Parameters, включающую все связанные с командой параметры. Каждый отдельный объект Parameter служит для хранения информации о параметре, передаваемом в исполняемую команду или возвращаемом в ней.

Recordset. Объекты Recordset обеспечивают взаимодействие с данными. Они используются для хранения набора записей, возвращаемого из источника данных.

Field. Объекты Recordset содержат коллекцию объектов Field, используемых для для работы с отдельными столбцами группы строк.

Property. Объекты Connection, Command, Recordset, Field содержатколлекциюProperties объектов Property. Объекты Property служат для представления дополнительных параметров или свойств объекта ADO, которые не могут управляться встроенными свойствами объекта.

Error. Предназначены для представления информации об ошибках, которые могут происходить в рамках одной операции.

Коллекции:

Fields.

Properties.

Parameters.

Errors.

3.Немного о директиве #import

Директива препроцессора #import позволяет автоматически создавать библиотеку типов COM с классами С++ для COM интерфейсов. Это очень удобно, если у вас отсутствует доступ к MIDL-файлам. Использование этой директивы Visual C++ существенно упрощает работу с объектами, методами и свойствами ADO.

При включении директивы #import препроцессор компилятора формирует два заголовочных файла, содержащих библиотеку типов в виде исходного текста на С++. Главный заголовочный файл (с расширением .tlh) содержит описание классов плюс объявление интеллектуального указателя (smart pointer — _com_ptr_t):

_COM_SMARTPTR_TYPEDEF(INameOfInterface, __uuidof(INameOfInterface));

При подобном использовании макроса _COM_SMARTPTR_TYPEDEF компилятор объявляет интеллектуальный указатель INameInterfacePtr.

Примечание: _com_ptr_t — шаблонный класс, инкапсулирующий указатель на COM-интерфейс. Объект _com_ptr_t автоматически вызывает методы инкапсулированного в нем интерфейса AddRef() при создании объекта и Release() при выходе объекта из области видимости, корректно управляя существованием COM-объекта.

Вспомогательный заголовочный файл (.tli) содержит реализацию классов библиотеки типов.

Директива #import имеет вид:

#import «имя_файла» [атрибуты]

или

#import <имя_файла> [атрибуты]

имя_файла — обычно файл следующих типов: .tlb, .odl, .dll, .exe, .ocx.

атрибуты:

exclude — исключает генерируемого в заголовочных файлах кода определенные элементы или библиотеки типов

high_method_prefix — задает префикс, который будет ставится в начале имен методов и свойств верхнего уровня

high_property_prefixes — задает префикс для стандартных имен Get, Put и PutRef, который будет поставлен в начале имени метода при обращении к свойству.

implementation_only — запрещает создание основного заголовочного файла

include(…) — включает объявления других библиотек типов, определение которых встречаются в других системных файлах

inject_statement — помещает строку текста в начале объявления объявления пространства имен заголовочного файла для библиотеки типов.

named_guides — указывает компилятору определить и инициализировать переменные со старыми GUID

no_auto_exclude — запрещает автоматическое исключение определений элементов

no_implementation — запрещает генерацию файла .tli

no_namespace — Не используется пространство имен, спецификация которого находится в операторе library

raw_dispinterfaces — указывает компилятору генерировать все вызовы методов и свойств посредством функции Invoke и возвращать код ошибки HRESULT. Оболочки верхнего уровня не генерируются.

raw_interfaces_only — позволяет предоставить содержимое библиотеки типов только нижнего уровня, подавляя генерацию заготовок функций верхних уровней

raw_method_prefix — присоединяет к заданному имени префикс raw_, который обычно подключается к функциям-членам низкого уровня

raw_native_types — заставляет использовать типы данных нижнего уровня (вместо _bstr_t — BSTR, вместо _variant_t — VARIANT)

raw_property_prefixes — позволяет задать префикс нижнего уровня для методов-свойств put, get и putref

rename — переименовывает библиотеку типов и предотвратить повторное использование имен

rename_namespace — указывает пространство имен, содержащее информацию о библиотеке типов.Итак, после нудных разъяснений по директиве #import, рассмотрим, каким образом ее (директиву) можно использовать для включения интерфейсов ADO в наше приложение.

Пропишем в файл stdafx.h (например) пресловутую директиву следующим образом:

#import «c:Program FilesCommon FilesSystemADOmsado15.dll»

no_namespace rename(«EOF»,«ADOEOF»)

В данном случае создаются классы из библиотеки типов msado15.dll, реализующей объекты ADO и поставляемой в рамках OLE DB SDK.

В параметре rename приходится переименовывать ADO константу EOF, так как она уже используется в заголовочных файлах stdio.h, ios.h, stream.h, включенных в afxwin.h.

4. Инициализация COM.

Здесь все просто:

перед работой с объектами ADO необходимо инициализировать среду COM. Делается это посредством вызова API функции

HRESULT CoInitialize(LPVOID pvReserved );

где

pvReserved пареметр, равный NULL .

Для выгрузки COM применяется функция

void CoUninitialize();

5. Установка соединения с источником данных.

Для этих целей, как отмечалось выше, используется объект Connection (подключение к источнику данных и управление этим подключением осуществляется с помощью методов Open(), Close() объекта Connection).Хотя, стоит заметить, что вы можете не создавать его самостоятельно. Можно просто позволить ADO создать соединение, используемое объектами Recordset и Command. Однако вам необходимо создать объект Connection, если предполагается управление транзакциями (для создания и управления транзакциями предназначены следующие методы Connection: BeginTrans(), CommitTrans() и RoolbackTrans()).

Итак, создание соединения. Для этого предпринимаем следующие шаги:

1. Объявляем указатель на соединение:

_ConnectionPtr pConn;

2. Создаем объект Connection с помощью функции CreateInstance():

HRESULT CreateInstance( const CLSID& rclsid, IUnknown* pOuter=NULL, DWORD dwClsContext = CLSCTX_ALL )

где

rclsid — CLSID объекта;

pUnknown — указатель на внешний интерфейс при агрегировании;

dwClsContext — контекст запуска исполняемого кода.

Пример:

HRESULT hr;

hr = pConn.CreateInstance(__uuidof(Connection));

или

hr = pConn.CreateInstance(__uuidof(Connection), NULL,CLSCTX_INPROC_SERVER );

3. после создания экземпляра класса Connection создаем соединение. Сэтойцельювызываемметод Open объекта Connection.

HRESULT Open(_bstr_t ConnectionString, _bstr_t UserID, _bstr_t Password, long Options=NULL);

ConnectionString — строка соединения (см.табл.1.1 и 1.2).

UserID — имя пользователя для подключения к источнику данных

Password — пароль пользователя

Options — позволяет указать, каким образом будет осуществляться соединение — синхронно (adConnectUnspecified) или асинхронно(adAsyncConnect).

Таблица 1.1. Вид строки соединения, передаваемой в метод Open(…) объекта Connection для различных OLE DB поставщиков (MSDN)

Источник данных Строка соединения OLE DB
Microsoft® Access Provider=Microsoft.Jet.OLEDB.4.0;Data Source=physical path to .mdb file
Microsoft SQL Server Provider=SQLOLEDB.1;Data Source=path to database on server
Oracle Provider=MSDAORA.1;Data Source=path to database on server
Microsoft Indexing Service Provider=MSIDXS.1;Data Source=path to file

Таблица 1.2. Вид строки соединения, передаваемой в метод Open(…) объекта Connection для различных ODBC поставщиков данных (MSDN)

Источник данных Строка соединения ODBC
Microsoft Access Driver={Microsoft Access Driver (*.mdb)};DBQ=physical path to .mdb file
SQL Server DRIVER={SQL Server};SERVER=path to server
Oracle DRIVER={Microsoft ODBC for Oracle};SERVER=path to server
Microsoft Excel Driver={Microsoft Excel Driver (*.xls)};DBQ=physical path to .xls file; DriverID=278
Microsoft Excel 97 Driver={Microsoft Excel Driver (*.xls)};DBQ=physical path to .xls file;DriverID=790
Paradox Driver={Microsoft Paradox Driver (*.db)};DBQ=physical path to .db file;DriverID=26
Text Driver={Microsoft Text Driver (*.txt;*.csv)};DefaultDir=physical path to .txt file
Microsoft Visual FoxPro® (with a database container) Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDb=physical path to .dbc file
Microsoft Visual FoxPro (without a database container) Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDb=physical path to .dbf file

Следующий пример показывает установку соединения с базой данных pubs, входящей в стандартный пакет поставки MS SQL Server 7.0 с помощью OLE DB поставщика:

_ConnectionPtr pConn = NULL;

_bstr_t strConn = «Provider=sqloledb;Data Source=(local);Initial Catalog=pubs»;

try

{

pConn.CreateInstance(__uuidof(Connection));

pConn->Open(strConn,«sa»,””,adConnectUnspecified);

}

catch(_com_error e)

{

//Обработка ошибок соединения

}

Примечание:

Исключения в ADO. Для обработки исключений ADO необходимо обеспечить блок catch для объекта _com_error. Этот класс используется для возврата ошибок из классов, сгенерированных директивой #import. Класс _com_error инкапсулирует генерируемые значения HRESULT и любые объекты IErrorInfo, сгенерированные поставщиком OLE DB.

Пример обработчиков исключений ADO:

void PrintComError(_com_error &e)

{

_bstr_t bstrSource(e.Source());

_bstr_t bstrDescription(e.Description());

// Print COM errors.

printf(«Error „);

printf(“ Code = %08lx », e.Error());

printf(” Code meaning = %s “, e.ErrorMessage());

printf(” Source = %s “, (LPCSTR) bstrSource);

printf(” Description = %s “, (LPCSTR) bstrDescription);

}

void PrintProviderError(_ConnectionPtr pConnection)

{

// Print Provider Errors from Connection object.

// pErr is a record object in the Connection’s Error collection.

ErrorPtr pErr = NULL;

if( (pConnection->Errors->Count) > 0)

{

long nCount = pConnection->Errors->Count;

// Collection ranges from 0 to nCount -1.

for(long i = 0;i < nCount;i++)

{

pErr = pConnection->Errors->GetItem(i);

printf(” Error number: %x %s”, pErr->Number,

pErr->Description);

}

}

}

По умолчанию при установке соединения время ожидания составляет 15 сек. Изменить это значение можно заданием перед открытием соединения свойства ConnectionTimeout.

Если требуется ограничить доступ приложения к источнику данных, перед открытием соединения необходимо установить режим коннекта (свойство Mode объекта Connection). Mode может содержать комбинацию (поразрядное ИЛИ) следующих значений:

adModeRead — Только для чтения

adModeReadWrite — Для чтения/записи.

adModeShareDenyNone — Позволить другим проводить чтение/запись

adModeShareDenyRead — Запретить другим чтение.

adModeShareDenyWrite — Запретить другим запись

adModeShareExclusive — Запретить другим чтение/запись

adModeUnknown — Нет разрешений (по умолчанию)

adModeWrite — Только для записи

6. Закрытие соединения

Завершается работа с источником данных закрытием соединения — вызовом метода Close() объекта Connection.

pConn->Close();

Часть 2.

Итак, продолжим.

7. Наборы записей.

Соединение с источником данных установлено. Далее необходимо собственно эти данные получить и как-то ими управлять. С этой целью создается объект Recordset, который инкапсулирует набор записей, возвращаемых источником. С помощью этого объекта мы сможем добавлять, удалять, изменять записи, в этот объект включен механизм перемещений по записям в наборе данных.

7.1. Создание набора записей.

Объект Recordset можно создать несколькими способами: в результате выполнения команды (использование метода Execute() объекта Command или Connection), или с помощью метода Open() непосредственно объекта Recordset. Рассмотримпоподробнеепоследнийвариант. Итак, метод Open().

HRESULT Open(const _variant_t &Source, const _variant_t &ActiveConnection, enum CursorTypeEnum CursorType, enum LockTypeEnum LockType, long Options);

Source — источник выборки (набора записей). Может быть как SQL строка (запрос), так и имя таблицы или хранимой процедуры на SQL сервере.

ActiveConnection — Соединение, используемое для создание набора записей (выборки). Может быть передано либо в виде строки соединения (при этом отпадает необходимость создания объекта Connection — ADO автоматически создает соединение, которое будет использовано для данного объекта Recordset. Указатель на такое соединение можно получить с помощью свойства объекта Recordset ActiveConnection), либо в виде указателя на уже созданное активное соединение.

CursorType — тип курсора для создаваемого объекта Recordset. Может принимать одно из следующих значений:

adOpenUnspecified — неопределенный тип курсора.

adOpenForwardOnly — односторонний курсор (значение по умолчанию). Не поддерживает методы MoveFirst() (к началу выборки), MoveLast() (к последней записи в выборке), MovePrevious()(к предыдущей записи в выборке). Также не поддерживает использование свойства RecordCount (количество записей в выборке). Не отслеживаются изменения и добавления, сделанные другими пользователями.

adOpenKeyset — курсор, управляемый по ключевому множеству, который может свободно перемещаться и находит некоторые виды изменений, внесенные в строки выборки. Число записей в таком наборе неизменно. Вы не сможете увидеть добавленных другими пользователями записей, удаленные другими пользователями записи остаются видимы в такой выборке, хотя и становятся недоступными.

adOpenDynamic — динамический курсор, который может перемещаться и определять все изменения, внесенные в данные, содержащиеся в выборке. Самый многофункциональный, но и самый дорогой по расходу памяти тип курсора.

adOpenStatic — статический курсор. В отличие от DAO, разрешается модифицировать все ADO Recordset, даже имеющие курсоры adForwardOnly и adOpenStatic. Однако при выборе таких курсоров для выборки все изменения, вносимые другими пользователями для вас невидимы.

LockType — Тип блокировки, используемый данным набором записей. Варианты:

adLockReadOnly — только чтение.

adLockPessimistic — блокирует строки, когда вы начинаете редактирование (если поставщик поддерживает данный тип).

adLockOptimistic — блокирует изменения только при передаче изменений в БД (поддерживается всеми поставщиками данных).

adLockBatchOptimistic — используется для пакетных операций модификации. Пакетная модификация позволяет выгружать множество записей, модифицировать их локально и отсылать изменения поставщику в одном пакете. Большинсто провайдеров не поддерживают эту блокировку.

Options — используется для указания вида Source. Варианты:

adCmdText — текстовая команда (в SQL соглашении).

adCmdTable — таблица или представление (она же — «вьюха», т.е.view).

adCmdStoredProc — хранимая процедура

adCmdUnknown — неизвестный тип (по умолчанию).

Ну что ж, попробуем открыть таблицу authors нашей многострадальной базы данных pubs. Предварительно еще надо определить, будет курсор серверным или клиентским. Сделаем мы это с помощью свойства CursorLocation объекта Recordset (варианты — adUseClient, adUseServer, adUseNone). Можно также ограничить число возвращаемых записей (свойство MaxRecords), задавать количество локально кэшируемых строк в наборе записей (свойство CacheSize — по умолчанию равно единице).

Пример:

_RecordsetPtr pRst;

_bstr_t strTableName = «authors»;

pRst.CreateInstance(__uuidof(Recordset));

pRst->CursorLocation = adUseClient;

pRst->MaxRecords = 50;

pRst->CacheSize = 30;

pRst->Open(strTableName,_variant_t((IDispatch*)pConn,true),adOpenDynamic, adLocjOptimistic, adCmdTable);

7.2. Установка фильтра в наборе записей.

В ADO имеется механизм ограничения по какому-либо критерию возвращаемого набора записей — фильтрация выборки. Именно для целей фильтрации объект Recordset обладает свойством Filter.

Свойство Filter представляет собой расширение запроса, заданного в параметре Source Recordset’a. Строка, передаваемая в свойство Filter, должна иметь вид Имя_поля(столбца) — Оператор — Значение, например

pRst->Filter = «au_lname=’White AND’ au_fname LIKE ‘J*’ »;

Имя_поля — имя столбца из выборки Recordset.

Оператор — <, >, <=, >=, <>, =, или LIKE

Значение — значение, с которым сравнивается значение поля. Причем для строковых типов данных значение должно быть заключено в одинарные кавычки, для даты значение заключается между символами #. Допускается использование (как и в SQL синтаксисе) символов * и %, например при использовании оператора LIKE. Также допускается применение логических операторов AND и OR для составления комбинированного критерия фильтрации.

Свойство Filter также может принимать значение одной из нижеперечисленных констант:

adFilterNone — Отменяет текущее значение свойства Filter.

adFilterPendingRecords — В режиме пакетной модификации (см.ниже) это значение можно использовать для выбора только из тех строк, которые были изменены, но еще не модифицированы в базе данных.

adFilterAffectedRecords — Выбирает строки, для которых выполнялась последняя операция Delete(), Resync(), UpdateBatch(), CancelBatch().

adFilterFetchedRecords — выбирает строки, которые в настоящее время содержатся в локальном буфере.

7.3. Доступ к данным набора записей.

Информацию о строках (записях) можно получить, используя объекты Field коллекции Fields созданного и открытого Recordset’a.

Коллекция Fields содержит два свойства:

Count — количество столбцов в выборке (более правильно, конечно говорить о количестве объектов Field в коллекции Fields).

Item — предоставляет доступ (возвращает ссылку) к объекту Field по имени или порядковому номеру, т.е. вам становятся доступны такие свойства объекта Field, как имя поля, размер, тип и значение поля.

Покажем это все на примере:

int nNumFields = pRst->Fields->Count;

for(int i=0;i<nNumFields;i++)

{

_bstr_t strName = pRst->Fields->Item[(_variant_t)I]->Name;

_bstr_t strValue = pRst->Fields->Item[(_variant_t)I]->Value;

TRACE(” %S = %S (тип: %d) “, (LPCTSTR)strName, (LPCTSTR) strValue, (short) pRst->Fields->Item(_variant_t)I]->Type);

}

//Или то же самое, но с созданием объектов FieldsPtr и FieldPtr

FieldsPtr pFields;

FieldPtr pField;

pFields= pRst->Fields;

int nNumFields = pFields->Count;

for(int i=0;i<nNumFields;i++)

{

pField = pFields->GetItem((_variant_t)i);

_bstr_t strName =pField->Name;

_bstr_t strValue = pField->Value;

TRACE(” %S = %S (тип: %d) “, (LPCTSTR)strName, (LPCTSTR) strValue, (short) pField->Type);

}

В примере мы выводим данные о полях одной записи (по умолчанию это первая строка выборки). Рассмотрим методы перемещения по выборке данных.

Чтобы перейти к первой строке набора записей можно применить метод MoveFirst() объекта Recordset. Методы MoveNext(), MoveLast() и MovePrevious() позволяют перемещаться по выборке, соответственно, к следующей записи, к последней и предыдущей (если эти перемещения допускает тип курсора).

Объект Recordset имеет свойства EOF и BOF (название свойства EOF мы изменили при подключении msado15.dll — см.выше), которые позволяют определить, что при перемещении по набору записей достигнута последняя (EOF) или первая (BOF) запись. Происходит это следующим образом: если при перемещении по выборке достигнута первая запись, то при следующем вызове MovePrevious() свойство BOF приобретает значение TRUE, аналогично, если позиционирована последняя запись, то при использовании MoveNext() значение TRUE приобретает свойство EOF объекта Recordset.

Пример:

int nNumFields = pRst->Fields->Count;

while(!pRst->ADOEOF){

for(int i=0;i<nNumFields;i++)

{

_bstr_t strName = pRst->Fields->Item[(_variant_t)I]->Name;

_bstr_t strValue = pRst->Fields->Item[(_variant_t)I]->Value;

TRACE(” %S = %S (тип: %d) “, (LPCTSTR)strName, (LPCTSTR) strValue, (short) pRst->Fields->Item(_variant_t)I]->Type);

}

pRst->MoveNext();

}

Также для перемещения по выборке данных можно воспользоваться методом

HRESULT Move(long NumRecords, const _variant_t &Start = vtMissing);

Знаковое целое NumRecords показывает, на сколько записей необходимо переместится по выборке (если NumRecords > 0, то переместиться вперед, если NumRecords < 0, то назад).

Параметр Start задает начальное положение указателя текущей записи (если Start = 0, то перемещение произойдет относительно текущей записи, иначе в Start надо передавать так называемую закладку

(Значение закладки для текущей строки можно получить из свойства Bookmark выборки. Если сохранить это значение в какой-либо переменной, то потом его можно присвоить свойству Bookmark и снова сделать эту строку текущей. Проверить, что набор записей поддерживает закладки можно с помощью метода Support() объекта Recordset.)

на требуемую начальную запись).

ADO Recordset позволяет производить так называемый постраничный просмотр выборки. Для этого необходимо свойстве в PageSize объекта Recordset указать количество строк, составляющих одну страницу. При этом из свойства PageCount можно узнать о количестве страниц в выборке.

7.4. Модификация данных.

Вставка строк в Recordset осуществляется посредством методов AddNew() и Update().

Метод AddNew() непосредственно добавляет новую строку (и делает ее текущей) в наборе записей.

HRESULT AddNew(const _variant_t & FieldList, const _variant_t &Values);

FieldList — массив имен или номеров инициализируемых в строке полей.

Values — массив инициализирующих значений для этих полей.

Далее строку можно модифицировать с помощью объектов коллекции Fields (если это необходимо), после чего изменения можно сохранить в базе данных, вызвав метод Update() (если при вызове метода AddNew() в него передавались инициализирующие значения, Update() вызывать не надо).

HRESULT Update(const _variant_t &FieldList, const _variant_t &Values);

Как видно из определения, в Update(…), так же как и в AddNew(…) можно передавать массив имен (или номеров) модифицируемых полей и новые значения.

Пример добавления записи:

pRst->AddNew();

pRst->Fields->Item[«au_lname»]->Value = _bstr_t(«Усов»);

pRst->Fields->Item[«au_fname»]->Value = _bstr_t(«ВиталийМ.»);

pRst->Update();

Удалить запись в наборе записей можно с помощью метода Delete(…) объекта Recordset.

HRESULT Delete(enum AffectEnum AffectRecords);

AffectRecords принимает одно из следующих значений:

adAffectCurrent — удалить текущую строку(по умолчанию)

adAffectGroup — удаляет все строки, удовлетворяющие критерию свойства Filter.

adAffectAll — удаляет все записи.

adAffectAllChapters — удаляет все записи главы. (ссылка на диапазон строк источника данных. Как правило, ссылка на другой Recordset. Глава позволяет реализовать отношения наследник-родитель между объектами Recordset.)

Если Recordset находится в режиме непосредственного редактирования, то помеченные строки удаляются немедленно в источнике данных. Если же применяется режим пакетной модификации (наконец-то и до него дошли), то строки удалятся после вызова метода UpdateBatch().

Что же такое «режим пакетной модификации»??? Все очень просто — некоторые поставщики данных позволяют кэшировать выборки локально, вносить в них изменения и потом передавать всю выборку (или изменения в ней) источнику данных одновременно в одном пакете (а не по одной строке). Как отмечалось выше, для использования пакетной модификации необходимо при создании объекта Recordset использовать флаг adLockBatchOptimistic. Для передачи изменений в выборке источнику данных в пакетном режиме необходимо вызвать метод

HRESULT UpdateBatch(AffectEnum AffectRecords);

Где AffectRecords:

adAffectCurrent — обновить текущую строку(по умолчанию)

adAffectGroup — обновить все строки, удовлетворяющие критерию свойства Filter.

adAffectAll — обновить все записи.

adAffectAllChapters — обновить все записи главы. (ссылка на диапазон строк источника данных. Как правило, ссылка на другой Recordset. Глава позволяет реализовать отношения наследник-родитель между объектами Recordset.)

Если после модификации данных вы решили отменить изменения, сделать это можно с помощью методов CancelUpdate() и CancelBatch(AffectEnum AffectRecords) для режимов неотложной модификации и пакетной, соответственно.

Библиографическое описание:


Абилдаева, Г. Б. Технология ADO и средства доступа к реляционным базам данных / Г. Б. Абилдаева, Н. Н. Жанкоразова, М. О. Жанадил. — Текст : непосредственный // Молодой ученый. — 2015. — № 11 (91). — С. 156-158. — URL: https://moluch.ru/archive/91/18279/ (дата обращения: 28.04.2023).

Коротко на вопрос «Что такое ADO?» можно ответить так: это основная технология доступа к данным, не только реляционные базы данных для платформы.NET. Более конкретно — это набор объектов, при помощи которых программист может осуществить подключение к серверу баз данных, выборку данных и/или их модификацию.

Многие программисты, работающие с базами данных на платформах Microsoft, могли оценить простоту и удобство технологии ADO — ActiveX Data Objects. Интуитивно-понятный интерфейс и логичный набор объектов вместе с простотой программирования заслуженно получили признание программистов. Несмотря на это, вместе с новой платформой.NET Microsoft представляет и новое поколение средств доступа к базам данных — ADO.NET. Cтремительное развитие веб приложений вызвало необходимость пересмотреть методы работы с источниками данных, лучше адаптировать их к специфики приложений. Непредсказуемый рост числа клиентов интернет сайтов заставляет разработчиков переходить от клиентсерверной к three-tier архитектуре, что часто порождает непреодолимые проблемы. Базы данных не способны поддерживать неограниченное число активных соединений, ограничивая доступность сайта и принося убытки. Брандмауэры могут препятствовать передаче двоичных данных между узлами. ADO.NET призвано решить эти и другие проблемы и вместе с тем сохранить удобство и простоту программирования.

ADO была разработана для архитектуры клиент-сервер. Эта архитектура в течение ряда лет была достаточно прогрессивной, если учесть, что пришла она на смену архитектуре файл-сервер. Потом все нарастающая сложность систем обработки данных потребовала качественного изменения архитектуры: кроме двух уровней клиент и сервер баз данных появляются дополнительные уровни серверы, реализующие бизнес-логику приложений. До сих пор, правда, ни одна из разработанных для этой цели архитектур (в частности, DCOM и CORBA) не добились впечатляющих успехов в этом направлении, и на сегодняшний момент мне известно, пожалуй, больше вирусов, использующих их слабости, чем реально работающих продуктов на их основе..NET в целом и ADO.NET в частности очередная попытка навести порядок в сегменте многоуровневых приложений и сделать их разработку относительно простым и приятным занятием. Что из этого выйдет, судить пока рано, но, на мой взгляд, перспективы неплохи [1].

Поскольку ADO.NET ориентирована на разработку многоуровневых приложений корпоративного масштаба, это отложило неизбежный отпечаток на способы взаимодействия клиента с сервером. Если основной сценарий работы клиента в ADO начинается с создания соединения, которое потом удерживается открытым весь сеанс, то ADO.NET гораздо самостоятельнее в этом отношении. Вполне допустимым является сценарий, когда клиент устанавливает соединение, получает необходимые данные, закрывает соединение, длительное время обрабатывает данные, после чего вновь устанавливает соединение для передачи измененных данных обратно на сервер.

Искушенные в ADO программисты могут возразить, что, мол, мы уже давно имели такую возможность в виде отсоединенных наборов записей. Да, частично они правы. Однако отсоединенные наборы записей стоят несколько особняком в объектной модели ADO, и их функциональность оставляет желать лучшего.

MSDN божится, что при разработке ADO.NET преследовалась цель сделать новую платформу как можно более совместимой с прежней, так что разработчики особой разницы не заметят.

Преимущества и нововведения в ADO.NET. Использование разъединенной модели доступа к данным. В клиент-серверных приложениях традиционно используется технология доступа к источнику данных при которой соединение с базой поддерживается постоянно. Однако после широкого распространения приложений, ориентированных на Интернет, выявились некоторые недостатки такого подхода. Попробуем выявить некоторые из них. Соединения с базой данных требуют выделения системных ресурсов, что может быть критично при большой нагрузке сервера. Хотя постоянное соединение позволяет несколько ускорить работу приложения, общий убыток от растраты системных ресурсов сводит преимущество на нет.

Специфика веб приложений не позволяет серверу в каждый момент времени знать, что необходимо пользователю. То есть до следующего запроса сервер не имеет представления, нужно ли еще поддерживать соединение.

Опыт разработчиков показал, что приложения с постоянным соединением с источником данных чрезвычайно трудно поддаются масштабированию.

Хотя существуют и другие недостатки, приведенные, на мой взгляд, наиболее существенны и вероятнее всего встречались читателю. Все эти проблемы порождаются постоянным соединением с базой данных и решаются в ADO.NET, где используется другая модель доступа. Теперь соединение устанавливается лишь на то короткое время, когда необходимо проводить операции над базой данных.

Следует признать, что новая технология иногда все же проигрывает традиционной. Для этих случаев рекомендовано (не только мною, но и Microsoft) использовать ADO.

Хранение данных в объектах DataSet. При работе с базой данных нам чаще всего приходится работать не с одной, а несколькими записями. Более того, данные эти могут собираться из различных таблиц. В разъединенной модели доступа к базе данных не имеет смысла соединяться и источником данных при каждом обращении. Исходя из этого, представляется логичным хранить несколько строк и обращаться к ним при необходимости. Для этих целей и используется DataSet [2].

DataSet представляет собой, по сути, упрощенную реляционную базу данных и может выполнять наиболее типичные для таких баз данных операции. Теперь, в отличие от Recordset мы можем хранить в одном DataSet сразу несколько таблиц, связи между ними, выполнять операции выборки, удаления и обновления данных. Безусловно, разъединенная модель не позволяет постоянно отслеживать изменения в базе данных, производимые другими пользователями. Это может привести к ошибкам в таких приложениях, где информация должна обновляться каждый момент — заказ билетов или продажа ценных бумаг. Однако в любую секунду может быть получена свежая информация из базы данных через вызов метода FillDataSet. Таким образом, DataSet остается чрезвычайно удобным для самого широкого класса приложений: когда необходимо получить данные из базы и как-либо обработать их.

ADO.NET поддерживает два типа источников данных — SQL Managed Provider и ADO Managed Provider. SQL Managed Provider применяется для работы с Microsoft SQL Server 7.0 и выше, ADO Managed Provider — для всех остальных баз данных.

SQL Managed Provider — работает по специальному протоколу, называемому TabularData Stream (TDS) и не использует ни ADO, ни ODBC, ни какую-либо еще технологию. Ориентированный специально на MS SQL Server, протокол позволяет увеличить скорость передачи данных и тем самым повысить общую производительность приложения.

ADO Managed Provider — предназначен для работы с произвольной базой данных. Однако за счет универсальности есть проигрыш по сравнению с SQL Server Provider, так что при работе с SQL Server рекомендовано использовать специализированные классы. В данном обзоре мы коснемся ADO Managed Provider лишь мельком, указав только существующие незначительные различия, так как наиболее употребимой базой данных представляется SQL Server 7.0 или 2000, а разница заключается, в основном, в именовании.

Объекты DataSet ADO.NET. Объект DataSet является центральным элементом поддержки разъединенных распределенных сценариев данных в ADO.NET. Объект DataSet является находящимся в оперативной памяти представлением данных, обеспечивающим согласованную реляционную программную модель, независимо от источника данных. Он может использоваться с несколькими различными источниками данных, XML-данными или для управления данными, локальными по отношению к приложению. Объект DataSet представляет полный набор данных, включая связанные таблицы, ограничения и связи между таблицами. На следующей иллюстрации показана модель объектов DataSet.

ADO.NET DataSet — расположенное в оперативной памяти представление данных, обеспечивающее согласованную реляционную программную модель независимо от источника данных. DataSet представляет полный набор данных, включая таблицы, содержащие, упорядочивающие и ограничивающие данные, а также связи между таблицами.

Существует несколько способов работы с DataSet, которые могут применяться отдельно или в сочетании. Можно выполнить следующие действия:

–         Программно создать DataTable, DataRelation и Constraint внутри DataSet и заполнить таблицы данными.

–         Заполнить DataSet таблицами данных из существующего реляционного источника данных с помощью DataAdapter.

–         Загрузить и сохранить содержимое DataSet с помощью XML-кода.

Строго типизированный DataSet также можно передавать с помощью веб-службы с поддержкой XML-кода. Конструкция DataSet делает его идеальным для передачи данных с помощью веб-служб с поддержкой XML-кода.

Объектная модель DataSet. Методы и объекты DataSet согласованы с методами и объектами модели реляционной базы данных.

Объект DataSet также может сохранять и повторно загружать свое содержимое в виде XML, а свою схему — в виде схемы XSD.

Класс DataTableCollection. Объект ADO.NET DataSet содержит коллекцию, содержащую ноль или более таблиц, представленных объектами DataTable. Коллекция DataTableCollection содержит все объекты DataTable в объекте DataSet.

Объект DataTable определяется в пространстве имен System.Data и представляет собой одну таблицу, находящуюся в оперативной памяти. Он содержит коллекцию столбцов, представленных объектом DataColumnCollection, и ограничений, представленных объектом ConstraintCollection, которые вместе определяют схему таблицы. Объект DataTable также содержит коллекцию строк, представленных объектом DataRowCollection, содержащим данные в таблице. Вместе со своим текущим состоянием объект DataRow сохраняет обе свои версии (текущую и исходную), чтобы определить изменения значений, хранимых в строке.

Класс DataView. DataView позволяет создавать различные представления данных, которые хранятся в DataTable. Эта возможность часто используется в приложениях связывания данных. С помощью объекта DataView можно представлять данные в таблице с различными порядками сортировки, а также фильтровать данные по состоянию строки или на основе критерия фильтра.

Класс DataRelationCollection .Объект DataSet содержит связи в своем объекте DataRelationCollection. Связь, представленная объектом DataRelation, связывает строки в одном объекте DataTable со строками в другом объекте DataTable. Связь аналогична пути соединения, который может существовать между столбцами первичного и внешнего ключей реляционной базы данных. Объект DataRelation определяет совпадающие столбцы в двух таблицах объекта DataSet.

Связи позволяют перемещаться в объекте DataSet от одной таблицы к другой. Важными элементами объекта DataRelation являются имя связи, имена связанных таблиц и связанные столбцы в каждой таблице. Связи могут быть построены с более чем одним столбцом для каждой таблицы путем указания массива объектов DataColumn в качестве ключевых столбцов. При добавлении связи к объекту DataRelationCollection дополнительно можно добавить UniqueKeyConstraint и ForeignKeyConstraint, чтобы обеспечить ограничения целостности в случае изменений значений связанных столбцов.

Подведем итог. ADO.NET представляет новую структуру объектов и новую модель доступа к данным, позволяющую улучшить производительность наиболее часто встречающихся приложений. Это дает нам основания пророчить ADO.NET как основную технологию доступа данным в веб приложениях.

Литература:

1.                  Сеппа Д. Microsoft ADO.NET. /Пер. с англ. — М.: Издательско-торговый дом «Русская Редакция», 2003- — 640 стр.

2.                  Альманах программиста, том I: Microsoft ADO.NET, Microsoft SQL Server, доступ к данным из приложений. /Сост. Ю. Е. Купцевич. — М.: Издательско-торговый дом «Русская Редакция», 2003. — 400 с.

Основные термины (генерируются автоматически): ADO, SQL, баз данных, источник данных, данные, таблица, база данных, соединение, оперативная память, реляционная база данных.

Использование ADO-технологии в информационной системе ‘Гостиница’

Минобрнауки России

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

“Хакасский государственный университет им. Н.Ф. Катанова”

Институт
информационных технологий и инженерного образования

Кафедра
программного обеспечения вычислительной техники и автоматизированных систем

.62 –
Информационные системы и технологии

Курсовая
работа

Использование
ADO-технологии в информационной системе “Гостиница”

Выполнил:

Студент группы 41, Юшин А.С.

Проверил:

Научный руководитель:

доцент каф. ИТиС Санников Е.В.

Дата проверки: 12.12.2012

Абакан, 2012

Содержание

Введение

.
Теоретическая часть

.1 Выбор
среды разработки

.2 Выбор
СУБД. MS Access

.3 Технология
ADO

1.4
Microsoft Jet 4.0 OLE DB Provider

Выводы

2. Практическая
часть

.1 Краткий
обзор существующих информационных систем

.1.1 Система
автоматизации гостиниц Hotel-2000

.1.2
Автоматизированная система управления гостиницей “Русский отель”

.1.3 Система
управления “Fidelio”

.2 Требования
к разрабатываемой информационной системе

.3 Описание
разрабатываемой системы

.4
Проектирование БД “Гостиница” в среде СУБД Access

.5 Модели
разрабатываемой информационной системы

.6
Проектирование интерфейса

.7 Реализация
программного средства

Выводы

Заключение

Список
использованных источников

Приложение.
Листинг кода программы

Введение

Актуальность

В последнее время использование информационных систем в различных сферах
деятельности всё более распространено.

В настоящее время все больше используют информационные технологии и в гостиничном
бизнесе.

Гостиница – имущественный комплекс (дом, здание, часть здания, иные
постройки) с меблированными комнатами (“номерами”) для временного
проживания [2].

С точки зрения функционирования или структуры гостиницы, можно сказать,
что гостиница располагает номерами с разным уровнем сервиса, комфортности и,
соответственно, оплаты. Номера могут быть разных типов: люкс – многокомнатный
номер с высоким уровнем сервиса, комфортности и обслуживания; полулюкс – номер
меньшей, чем люкс, площади, но с достаточным уровнем сервиса и комфортности;
обычный номер – с минимальным уровнем сервиса. В гостинице ведется учет
состояния номеров.

Все прибывающие и размещаемые в гостинице клиенты при вселении должны
заполнить карточку регистрации, в которой необходимо указать фамилию, имя,
отчество, дату рождения, адрес места жительства, паспортные данные, время
заселения, время отъезда.

Любой номер гостиницы имеет номер, по которому ведется учет клиентов,
проживающих в гостинице. Именно этому и посвящена данная курсовая работа.

Целью курсовой работы является создание информационной системы
“Гостиница” с использованием технологии ADO.NET .

Для достижения поставленной цели были определены следующие задачи:

. Изучение специальной литературы;

. Выбор СУБД для создания базы данных;

. Описание информационной технологии ADO.NET;

. Выполнить программную реализацию в среде объектно-ориентированного
программирования Delphi 7.

1. Теоретическая часть

1.1 Выбор среды разработки

На данном этапе рассмотрены четыре средства для разработки программного
продукта.- императивный, структурированный, объектно-ориентированный язык
программирования, диалект Object Pascal. Начиная со среды разработки Delphi
7.0, в официальных документах Borland стала использовать название Delphi для
обозначения языка Object Pascal. Начиная с 2007 года уже язык Delphi
(производный от Object Pascal) начал жить своей самостоятельной жизнью и
претерпевал различные изменения, связанные с современными тенденциями развития
языков программирования: появились class helpers, перегрузки операторов и
другое [5].Pascal – результат развития языка Турбо Паскаль, который, в свою
очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком,
Турбо Паскаль, начиная с версии 5.5, добавил в Паскаль объектно-ориентированные
свойства, а в Object Pascal – динамическую идентификацию типа данных с
возможностью доступа к метаданным классов (то есть к описанию классов и их
членов) в компилируемом коде, также называемом интроспекцией – данная
технология получила обозначение RTTI. Так как все классы наследуют функции
базового класса TObject, то любой указатель на объект можно преобразовать к
нему, после чего воспользоваться методом ClassType и функцией TypeInfo, которые
и обеспечат интроспекцию.

Также отличительным свойством Object Pascal от С++ является то, что
объекты по умолчанию располагаются в динамической памяти. Однако можно
переопределить виртуальные методы NewInstance и FreeInstance класса TObject.
Таким образом, абсолютно любой класс может осуществить “желание”
“где хочу – там и буду лежать”. Соответственно организуется и
“многокучность” [3].- объектно-ориентированный язык программирования,
разработанный компанией Sun Microsystems (в последующем, приобретённой
компанией Oracle). Приложения Java обычно компилируются в специальный байт-код,
поэтому они могут работать на любой виртуальной Java-машине (JVM) независимо от
компьютерной архитектуры. Достоинство подобного способа выполнения программ – в
полной независимости байт-кода от операционной системы и оборудования, что позволяет
выполнять Java-приложения на любом устройстве, для которого существует
соответствующая виртуальная машина. Другой важной особенностью технологии Java
является гибкая система безопасности благодаря тому, что исполнение программы
полностью контролируется виртуальной машиной. Любые операции, которые превышают
установленные полномочия программы (например, попытка несанкционированного
доступа к данным или соединения с другим компьютером) вызывают немедленное
прерывание. Идеи, заложенные в концепцию и различные реализации среды
виртуальной машины Java, вдохновили множество энтузиастов на расширение перечня
языков, которые могли бы быть использованы для создания программ, исполняемых
на виртуальной машине. Эти идеи нашли также выражение в спецификации общеязыковой
инфраструктуры CLI, заложенной в основу платформы.NET компанией Microsoft. Дата
официального выпуска – 23 мая 1995 года [4].Visual Basic – средство разработки
программного обеспечения, разрабатываемое корпорацией Microsoft и включающее
язык программирования и среду разработки. Язык Visual Basic унаследовал дух,
стиль и отчасти синтаксис своего предка – языка Бейсик, у которого есть немало
диалектов. В то же время Visual Basic сочетает в себе процедуры и элементы
объектно-ориентированных и компонентно-ориентированных языков программирования.
Среда разработки VB включает инструменты для визуального конструирования
пользовательского интерфейса.Basic считается хорошим средством быстрой
разработки прототипов программы, для разработки приложений баз данных и вообще
для компонентного способа создания программ, работающих под управлением
операционных систем семейства Microsoft Windows [6].

.2 Выбор СУБД. MS Access

База данных – это средство накопления и организации больших массивов
информации об объектах некоторой предметной области[2]. БД должна отображать
текущие данные о предметной области, накапливать, хранить информацию и
предоставлять различным категориям пользователей быстрый доступ к данным. Для
этого данные в базе должны быть структурированы в соответствии с некоторой
моделью, отражающей основные объекты ПО, их свойства и связи между ними [2].

Все данные в базах находятся в таблицах и разделены по смысловой
нагрузке. Каждая таблица для описания содержимого атрибутов использует типы
данных (домены), домены Access подходят для описания данных любой предметной
области. Недостаток в том, что в Access нельзя создавать собственные домены
необходимые для описания нестандартных данных, таких как возраст
работоспособного сотрудника, его можно было описать доменом (все данные
принадлежат к целым числам в интервале от 18 до 60).Access это входящая в
стандартный набор Microsoft Office настольная, реляционная система управления
базами данных. Благадаря тому, что она входит в состав Microsoft Office она
может легко создавать связь с другими приложениями Microsoft Office. Ее
средствами можно создавать различные запросы, отчеты и формы для заполнения.
Благодаря технологии ADO MS Access легко подключается к Delphi. Объект ADO
Connection подключается к базе данных созданной в Access, в ADO Table
выбирается конкретная таблица, с которой будет взаимодействовать, ADO Query
позволяет создавать SQL запросы средствами Delphi. Технология ADO хорошо
подходит под Access.

Но Access обладает недостатками: Это не сетевая база данных, поэтому
продукты, созданные с использованием Access, не могут быть использованы при
сетевой работе. В режиме конструктора создания таблиц не возможно задать два
ключевых поля, или задать двум различным атрибутам тип данных счетчик. В связи
с этим могут возникнуть сложности при экспорте и импорте данных из программ
визуализации баз данных и других систем управления базами данных[2].

.3 Технология ADO

Технология ADO завоевала популярность у разработчиков, благодаря
универсальности – базовый набор интерфейсов OLE DB имеется в каждой современной
операционной системе Microsoft. Поэтому для обеспечения доступа приложения к
данным достаточно лишь правильно указать провайдер соединения ADO и затем
переносить программу на любой компьютер, где имеется требуемая база данных и,
конечно, установленная ADO [11].

В Палитре компонентов Delphi есть страница ADO, содержащая набор
компонентов, позволяющих создавать полноценные приложения БД, обращающиеся к
данным через ADO.

Технология Microsoft ActiveX Data Objects обеспечивает универсальный
доступ к источникам данных из приложений БД. Такую возможность предоставляют
функции набора интерфейсов, созданные на основе общей модели объектов СОМ и
описанные в спецификации OLE DB.

Технология ADO и интерфейсы OLE DB обеспечивают для приложений единый
способ доступа к источникам данных различных типов. Например, приложение,
использующее ADO, может применять одинаково сложные операции и к данным,
хранящимся на корпоративном сервере SQL, и к электронным таблицам, и локальным
СУБД. Запрос SQL, направленный любому источнику данных через ADO, будет
выполнен.DB представляет собой набор специализированных объектов СОМ,
инкапсулирующих стандартные функции обработки данных, и специализированные
функции конкретных источников данных и интерфейсов, обеспечивающих передачу
данных между объектами.

Согласно терминологии ADO, любой источник данных (база данных,
электронная таблица, файл) называется хранилищем данных, с которым при помощи
провайдера данных взаимодействует приложение. Минимальный набор компонентов
приложения может включать объект соединения, объект набора данных, объект
процессора запросов.

В результате приложение обращается не прямо к источнику данных, а к
объекту OLE DB, который “умеет” представить данные (например, из
файла электронной почты) в виде таблицы БД или результата выполнения запроса
SQL.

Технология ADO в целом включает в себя не только сами объекты OLE DB, но
и механизмы, обеспечивающие взаимодействие объектов с данными и приложениями.
На этом уровне важнейшую роль играют провайдеры ADO, координирующие работу
приложений с хранилищами данных различных типов [5].

Такая архитектура позволяет сделать набор объектов и интерфейсов открытым
и расширяемым. Набор объектов и соответствующий провайдер может быть создан для
любого хранилища данных без внесения изменений в исходную структуру ADO. При
этом существенно расширяется само понятие данных – ведь можно разработать набор
объектов и интерфейсов и для нетрадиционных табличных данных.

Так как технология ADO основана на стандартных интерфейсах СОМ, которые
являются системным механизмом Windows, это сокращает общий объем работающего
программного кода и позволяет распространять приложения БД без вспомогательных
программ и библиотек [11].

.4 Microsoft Jet 4.0 OLE DB Provider

Jet – это ядро базы данных, которое обеспечивает возможность доступа к
данным из любого приложения, поддерживающего OLE Automation, в частности VBA и
Excel, независимо от интерфейса конкретной системы управления базами данных[2].
Ядро Jet хранит свою информацию по умолчанию в файлах с базами данных, имеющих
расширение mdb. Такие файлы содержат таблицы, модули, формы, отчеты, запросы и
индексы. Конечно, формат mdb – это не единственный формат баз данных, с
которыми работает Microsoft Jet. Он поддерживает форматы баз данных, созданных
с помощью Microsoft Access, dBASE и т. д[2].

По умолчанию Microsoft Jet является ядром базы данных, который
используется в Microsoft Access. Для повышения производительности и
стабильности нужно использовать формат базы данных Microsoft Jet 4.0 при
использовании клиента Microsoft Jet 4.0. Аналогично при использовании клиента
Microsoft Jet 3.5 следует использовать формат базы данных Microsoft Jet 3.0. В
таблице 1.1 перечислены доступные в настоящее время форматы Jet, а также
трансляторы dll, используемые в определенных версиях Access и форматах Jet.

Таблица 1.1. Форматы Jet и используемые трансляторы.

Версия Access

Формат Jet

Используемый транслятор dll

Access 2.0

Jet 2.0

Msrd2x40.dll

Access 95

Jet 3.0

Msrd3x40.dll

Access 97

Jet 3.0

Msrd3x40.dll

Access 2000

Jet 4.0

Нет

Access 2002

Jet 4.0

Нет

Access 2003

Jet 4.0

Нет

В таблице 1.2 перечислены наиболее часто используемые клиентами ядра базы
данных Microsoft Jet, соответствующие версии ядер баз данных Jet и
рекомендуемые форматы баз данных Jet:

Таблица 1.2. Форматы Jet и используемые трансляторы.

Клиентское приложение

Используемый движок баз данных
Jet

Рекомендуемый формат баз
данных Jet

Access 2.0

Jet 2.0

Jet 2.0

Access 95

Jet 3.0

Jet 3.0

Access 97

Jet 3.5

Jet 3.0

Access 2000

Jet 4.0

Jet 4.0

Access 2002

Jet 4.0

Jet 4.0

Office Access 2003

Jet 4.0

Jet 4.0

DAO 3.0

Jet 3.0

Jet 3.0

DAO 3.5

Jet 3.5

Jet 3.0

DA0 3.6

Jet 4.0

Jet 4.0

Microsoft.JET.OLEDB.3.51

Jet 3.5

Jet 3.0

Microsoft.Jet.OLEDB.4.0`

Jet 4.0

Jet 4.0

Access ODBC Driver

Jet 4.0

Jet 4.0

Ранние версии обновлений для Jet Database Engine включали в себя
программу сжатия баз данных Jet (JetComp).

Начиная с версии 5 (SP5), эту программу перестали включать во все версии
пакетов обновлений для Jet 4.0.

Примечание: драйвер Microsoft Access ODBC, который входит в состав MDAC
2.0 или более ранней версии, использует Microsoft Jet 3.5. Драйвер Microsoft
Access ODBC, который входит в состав MDAC 2.1 и компонентов MDAC версии 2.5,
использует Microsoft Jet 4.0. MDAC 2.6 и более поздних версий включает драйвер
Microsoft Access ODBC.

Это обусловлено тем, что старые ядра Jet не удается прочитать или не
удается записать к новому формату файла базы данных Jet.

Таким образом необходимо использовать старый формат и использования
библиотек трансляторов DLL [3].

Выводы

В качестве СУБД был выбран Microsoft Access, потому что базу данных,
созданную в этой СУБД, можно будет легко привязать к приложению, созданном в
среде разработки Delphi Borland 7 с помощью технологии ADO.NET.

2. Практическая часть

.1 Краткий обзор существующих информационных систем

Для того чтобы представить структуру будущей информационной системы,
можно обратиться к другим, уже существующим информационным системам.

.1.1 Система автоматизации гостиниц Hotel-2000

Система автоматизации гостиниц Hotel-2000 была создана в 1996 – 1997 гг.
компанией “Интур-Софт” при участии Правительства Москвы в рамках
Программы развития гостинично-турист-ского комплекса столицы, прошла испытания
и принята в эксплуатацию Межведомственной комиссией, образованной в
соответствии с распоряжением ГАО “Москва”. Система предназначена для
гостиниц с любым числом номеров. Система имеет модульную структуру и состоит из
подсистем автоматизации гостиничных функций (Hotel-2000) и автоматизации
ресторанов и баров (Restaurant-2000).

Система Hotel-2000 предусматривает выполнение следующих функций:

·  управление номерным фондом, оптимизацию загрузки гостиницы и
своевременное предоставление актуальной информации о состоянии номеров;

·        управление работой горничных и контроль за своевременной
уборкой номеров;

·        индивидуальное и групповое бронирование в реальном режиме
времени с проверкой наличия свободных номеров и возможностью оптимизации
загрузки гостиницы;

·        бронирование блоков номеров с гарантированной и
негарантированной формами оплаты;

·        просмотр и изменение информации о бронировании и моментальное
восстановление отмененных броней и незаездов;

·        автоматизацию процедур регистрации и оформления индивидуальных
гостей и групп как по предварительной брони, так и без нее с моментальным
поиском необходимого для гостя номера;

·        выписку счетов с автоматическим начислением стоимости
проживания и оказанных дополнительных услуг;

·        получение в любой момент по требованию клиента всей
необходимой информации о проживании с выдачей промежуточных счетов;

·        ведение архива гостей;

·        быстрое и простое ежесуточное закрытие дня, позволяющее
осуществить все начисления за прошедшие сутки и проверить работу кассиров без
остановки работы гостиницы;

·        управление ценовой политикой гостиницы с учетом сезонных
колебаний, условий взаимоотношений с партнерами и т.д.;

·        управление финансами гостиницы;

·        ведение бухгалтерского учета, обеспечение связи с российскими
и западными бухгалтерскими системами для формирования отчетности в соответствии
с российским планом счетов и планом счетов в стандарте GAAP.

Система Hotel-2000 позволяет получить более 100 различных статистических
и финансовых отчетов и проанализировать информацию о гостинице. Обеспечивает
учет кассовых операций с применением зарегистрированных учетно-кассовых машин.
[1]

.1.2 Автоматизированная система управления гостиницей “Русский
отель”

Фирма “Сервис плюс” совместно с фирмой “Ист Консепт”
разработала программно-аппаратный комплекс “Русский отель” для полной
автоматизации деятельности гостиниц и ресторанов. Система охватывает все
аспекты деятельности гостиницы и ресторана.

Полный учет выручки производится с использованием компьютерных
контрольно-кассовых машин. В системе предусмотрено ведение полного
бухгалтерского учета.

Система представляет собой единый комплекс взаимосвязанных
бизнес-процессов, полностью охватывающих основную производственную
деятельность, учет и контроль, построена по технологии автоматизированных
рабочих мест, которая исключает возможность прохождения не учтенных в системе
документов.

Информационная модель, заложенная в систему, соответствует типовой
организационной структуре гостиницы, а прикладное программное обеспечение
оформлено в виде программных модулей, реализующих определенные функции.

Набор модулей, покрывающих все функциональные потребности конкретного
рабочего места, оформлен в виде автоматизированного рабочего места (АРМ).
Система имеет ряд преимуществ: мобильна в использовании аппаратных средств, проста
в эксплуатации и легко наращивается за счет введения новых рабочих мест. В
системе предусмотрена возможность защиты данных от несанкционированного
внесистемного доступа. Внутри системы защита доступа к данным обеспечивается
уникальной идентификацией пользователя кодом и паролем.

Система состоит из следующих функциональных компонентов.

·  Подсистема “Управление”. Подсистема предназначена для
автоматизации деятельности руководителя гостиницы и обеспечивает: обработку
деловой документации; контроль исполнения; проверку состояния гостиничного
хозяйства и состояния работ по подразделениям; сервис.

·        Подсистема “Коммерческий отдел”. Подсистема
предназначена для автоматизации деятельности подразделения гостиницы по
обслуживанию гостей и обеспечивает: ведение договоров с корпоративными
клиентами; планирование приема и обслуживания гостей; сбор отчетной информации
по коммерческой деятельности; сбор справочной информации по состоянию
безналичных расчетов с партнерами.

·        Подсистема “Портье”. Подсистема предназначена для
автоматизации основной производственной деятельности гостиницы и обеспечивает:
резервирование и бронирование номеров; регистрацию, оформление и размещение
гостей; прием и оформление платежей; учет и оперативный контроль загрузки
гостиницы.

·        Подсистема “Этажная служба”. Подсистема
предназначена для автоматизации деятельности этажной службы гостиницы и решает
следующие задачи: учет номерного фонда; выдача различной справочной информации
о состоянии номерного фонда гостиницы; отслеживание должников за предоставленные
услуги; управление работой горничных; ведение графика ремонтов номерного фонда.

·        Подсистема “Диспетчер”. Подсистема предназначена
для автоматизации деятельности диспетчерской службы и обеспечивает обработку
заявок на проведение текущих ремонтных работ в гостинице; ведение графика
плановых ремонтов номерного фонда.

·        Подсистема “Ресторан”. Подсистема предназначена для
автоматизации деятельности подразделений общественного питания и решает
следующие задачи: ведение рецептур и технологических справочников; формирование
меню; калькуляция блюд и меню; мониторинг наличия продуктов на складе и
производстве; расчет затраченных продуктов; оформление движения продуктов на
производстве и требований на заказ продуктов на склад; оформление документов реализации
изделий; оформление списания продуктов по итогам реализации изделий и с
производства; формирование различных отчетов и справок; ведение программы
питания гостей и управление загрузкой залов.

·        Подсистема “Складской учет”. Подсистема
предназначена для автоматизации работы подразделений гостиницы, отвечающих за
прием, хранение и выдачу материальных ценностей и продовольственных продуктов,
обеспечивает ведение документации по их учету и движению.

·        Подсистема “Бухгалтерский учет”. Подсистема
предназначена для автоматизации бухгалтерского учета производственной и
хозяйственной деятельности гостиницы.

·        Подсистема “Заработная плата”. Подсистема
обеспечивает решение задач по расчету заработной платы по правилам, принятым
для каждого вида работников гостиницы с учетом действующих законодательных
актов.

·        Подсистема “Кадры”. Подсистема предназначена для
автоматизации деятельности кадровой службы гостиницы.

·        Подсистема “Оперативный учет доходов”. Подсистема
обеспечивает формирование отчетных документов по видам производственной
деятельности предприятия за различные интервалы времени. Виды, формы и
составляющие отчетных документов определяются и настраиваются в зависимости от
потребностей предприятия.

·        Расчеты с клиентами. Все расчеты с гостями за предоставленные
услуги производятся на автоматизированных рабочих местах, оснащенных
контрольно-кассовыми машинами (ККМ) моделей IPC POSIIS-СП или IPC GRS-38001-СП,
которые включены в государственный реестр. Они разрешены к использованию в
отелях и ресторанах и могут быть приняты к использованию не только за стойкой
портье и залах ресторана, но также в барах, буфетах, на этажах, т.е. везде, где
осуществляется прием платежей за наличный расчет или кредитными картами.
Использование единой системы расчетов открывает широкие возможности для
введения внутренней гостиничной кредитной карты.

·        Взаимосвязь с внешними электронными системами. При наличии в
гостинице собственной АТС, имеющей порт для выдачи информации о прошедших
телефонных переговорах, возможна стыковка системы управления с телефонной
станцией с целью ускорения получения данных о зарегистрированных телефонных
переговорах. Система осуществляет их тарификацию и формирование счетов за
переговоры для расчетов с клиентами [2].

2.1.3 Система управления “Fidelio”

Система Fidelio является составной частью глобальных компьютерных систем
бронирования Amadeus, Sabre, Galileo, Worldspan. Все гостиницы, представленные
в Fidelio, автоматически загружаются в эти глобальные компьютерные системы
бронирования.

К основным функциям системы Fidelio FO относятся: бронирование и
заселение гостей; начисления за проживание и другие услуги, оказываемые
гостиницей; аккумулирование информации о неоплаченных счетах клиентов,
поступающих из различных точек продаж; выставление промежуточных и окончательных
счетов для расчетов с клиентами; учет информации о безналичных расчетах;
получение финансовых и статистических отчетов; ведение информации о клиентах и
клиентских счетах: ведение истории по клиентам; бронирование; заселение;
ведение счетов; выписка; безналичные расчеты с клиентами.

Карточка гостя содержит информацию о клиенте: фамилия, имя, язык, код
VIP, адрес, страна проживания, телефон, факс, дата рождения, предпочитаемый
гостиничный номер, сроки проживания (измеряются ночами), число человек,
проживающих в номере, тип и категория комнаты, ценовой код, тип бронирования
(гарантированное или негарантированное).

Система Fidelio FO состоит из следующих основных модулей:

· Модуль бронирования: завести бронь для клиента; завести групповую бронь;
отменить бронь; корректировать бронь; перенести бронь в список ожидающих;
назначить конкретные номера по ранее сделанному бронированию; распечатать
подтверждения бронирования; принять депозит для бронирования.

·        Модуль портье. Он предназначен для поселения клиентов
гостиницы, имеющих бронь: поиск брони; назначение номеров и заселение;
изменение брони; отмена бронирования; печать подтверждений; подселение; прием
сообщений для прибывающих или прибывших гостей; прием депозита для
бронирования; перемещение брони в список ожидания; заведение служебных счетов
гостиницы.

·        Модуль кассира: выполнять текущую работу со счетами клиентов;
выставлять промежуточные счета; переселять клиента в другой номер; осуществлять
выписку; осуществлять ведение главной кассы; осуществлять операции обменного
пункта; осуществлять прием депозита для бронирования; печатать отчеты для
кассиров; исправлять бронь клиента; производить прием оплат; перенести
начисления с одного счета на другой; делить и объединять начисления; выполнять
ручные начисления на счета клиентов.

·        Бухгалтерский модуль: производить некоторые манипуляции с
начисленными суммами (переносить начисления с одного счета на другой, вводить
оплату по каждой позиции, отслеживать историю по клиентам, печатать отчеты и
письма клиентам).

Система Fidelio FO предоставляет возможность составлять различного рода
отчеты и прогнозы, которые необходимы для дальнейшего планирования деятельности
гостиницы: ежедневный отчет об активности, отчет об изменении спроса,
девятидневный прогноз, ежемесячный отчет. Автоматизация ресторанного и
складского учета в гостинице. Для автоматизации ресторанного и складского учета
в гостинице используются системы Fidelio F&B и Micros, которые могут
взаимодействовать между собой. [2]

.2 Требования к разрабатываемой информационной системе

В информационной системе должен быть реализован понятный и простой
интерфейс.

Также должны присутствовать следующие функции, выполняемые данной
системой:

·   Добавление записей в базу данных

·   Редактирование базы данных

·        Чтение записей в базе данных

·        Поиск клиента по ФИО

Требования к защите информации от несанкционированного доступа выглядят
таким образом:

·        Без пароля

·        Ограниченный доступ для сотрудников (запрет возможности
редактирования самого приложения)

.3 Описание разрабатываемой системы

Информационная система предназначена для получения информации о
посетителях, запись и редактирование информации о посетителях, получение
информации об имеющихся свободных номеров в гостинице. Доступ к информации
разрешен лишь сотрудникам данной гостиницы.

.4 Проектирование БД “Гостиница” в среде СУБД Access

Теперь, непосредственно после описания предметной области, нужно
переходить к проектированию программного продукта.

.5 Модели разрабатываемой информационной системы

Наиболее удобным языком моделирования бизнес-процессов является IDEF0. В
IDEF0 система представляется как совокупность взаимодействующих работ или
функций. Такая чисто функциональная ориентация является принципиальной, функции
системы анализируются независимо от объектов, которыми они оперируют. Это
позволяет более четко смоделировать логику и взаимодействие процессов
организации.

Любая DFD-диаграмма может содержать работы, внешние сущности, стрелки
(потоки данных) и хранилища данных[9].

Этап анализа и моделирования требований начинается с метода анализа
оптимальной организации работ – стандарт IDEF0. Контекстная диаграмма IDEF0
представлена на рисунке 2.1 ,а DFD диаграмма на рисунке 2.2.

Рисунок 2.1 – Контекстная диаграмма IDEF0 процесса деятельности гостиницы

На рисунке 2.2 представлена диаграмма первого уровня декомпозиции
процесса деятельности организации (IDEF0). Она используется для детализации
бизнес-процессов деятельности гостиницы.

Рисунок 2.2 – Диаграмма первого уровня декомпозиции процесса деятельности
гостиницы (DFD)

.6 Проектирование интерфейса

В процессе проектирования интерфейса определены следующие функциональные
блоки:

·        База данных (см. Таблица 2.1);

·        Блок просмотра и редактирования (см. Таблица 2.2).

Таблица 2.1. Спецификация функционального блока “База данных”

Атрибут

Значения

Назначение

Упорядоченное хранение
данных

Описание

Возможность отображения и
редактирования данных с СУБД

Внешнее отображение

Таблицы с данными

Входные/выходные данные

Данные клиентов

Входные/выходные сигналы
управления

Команды редактирования

Таблица 2.2. Спецификация функционального блока ” Блок просмотра и
редактирования”

АтрибутЗначения

Назначение

Обеспечение возможности
редактирования и просмотра базы данных

Описание

Возможность отображения и
редактирования базы данных без СУБД

Внешнее отображение

Совокупность форм на каждую
из таблиц

Входные/выходные данные

Данные клиентов

База данных

База данных гостиницы

Входные/выходные сигналы
управления

Команды редактирования

База данных должна быть приведена к третьей нормальной форме. Логическая
модель базы данных отображена на диаграмме ErWin на рисунке 2.3.

Рисунок 2.3. Логическая модель базы данных

Структура интерфейса представлена на рисунке 2.4. То есть, в данной
информационной системе главное меню связано с каждой формой, соответствующей
каждой таблице из созданной базы данных.

Рисунок 2.4. Схема требований, предъявляемых к базе данных

.7 Реализация программного средства

Описание и проектирование программного комплекса, а также выбор средства
для разработки программного продукта уже готовы. Теперь, непосредственно, можно
приступать к реализации информационной системе.

Для начала необходимо создать саму базу данных в Database Desktop,
состоящую из 4 таблиц. Для каждой из таблиц указаны атрибуты. Физическая
структура таблиц присутствует в таблицах 3.1-3.4.

Таблица 3.1. Регистрационная карта

Имя поля

Тип данных

Id_Kienty

Счетчик

ФИО Клиента

Текстовый

Дата заселения

Дата/Время

Номер комнаты

Числовой

Таблица 3.2. Клиенты

Имя поля

Тип данных

ФИО Клиента

Текстовый

Статус

Текстовый

Пол

Текстовый

Национальность

Текстовый

Количество человек

Цель приезда

Текстовый

Таблица 3.3. Номера комнат

Имя поля

Тип данных

Номер комнаты

Текстовый

Класс комнаты

Текстовый

Стоимость проживания в
сутки

Денежный

Количество комнат

Числовой

Таблица 3.4. Дата прибытия

Имя поля

Тип данных

Дата заселения

Дата/Время

ФИО Клиента

Текстовый

База данных готова, после этого приступили к основному этапу курсовой
работы – реализации приложения для взаимодействия с созданной базой данных.

Для начала создано четыре формы. На первой форме изображено главное меню
и таблица “Регистрационная карта”, представленные на рисунке 3.1, в
котором располагается меню для открытия других форм.

При нажатии каждой кнопке в главном меню прописана процедура для открытия
соответственной формы. Общий код процедуры для этих кнопок приведен ниже:

procedure TForm1.ButtonNClick(Sender: TObject);.show;
//форма которую надо открыть.hide; //форма которую надо закрыть;

Общий код для процедуры возврата на главную форму:

procedure TFormN.ButtonNClick(Sender: TObject);

begin.show; // Главная форма.hide; //форма которую надо закрыть;

Рисунок 2.5. Главная форма

Для портативности программы база данных перенесена в папку с проектом. На
главной форме загружен компонент ADOConnection, в котором установлена связь с
созданной базой данных. Так как системой будут пользоваться только сотрудники
гостиницы, защиту от пароля можно убрать. Для этого нужно включить опцию
“Пустой пароль” и в свойстве LoginPrompt компонента ADOConnection
прописать параметр False, чтобы не открывалось окно для ввода логина и пароля. Настройки
доступа к базе данных показано на рисунке 2.6.

Рисунок 2.6. Настройки доступа к базе данных

На остальных формах добавлены следующие компоненты, охарактеризованные в
таблице 3.5:

информационный гостиничный база delphi

Таблица 3.5. Свойства компонентов

Компонент

Свойство

Значение

Table1

DataBaseName

Alias курсовой работы

TableName

‘Имя таблицы,
соответствующее форме’

Active

True

DataSource1

DataSet

Table1

DBGrid1

DataSource

DataSource1

DBNavigator1

DataSource

DataSource1

Примеры интерфейсов форм представлены на рисунках 2.7-2.8

Рисунок 2.7. Форма “Клиенты”

Рисунок 2.8. Форма “Номера комнат”

Основные требования к интерфейсу программного продукта выполнены. Каждая
форма теперь отображает соответствующую таблицу из базы данных, и появилась
возможность добавления и редактирования записей. Но, помимо этого, полезно
добавить в информационную систему какие-нибудь дополнительные функции для еще
упрощенного пользования базой данных. Среди таких функций были выбраны фильтрация
и сортировка.

Код сортировки по ФИО сотрудника, дате заселения и номеру комнат:

procedure TForm1.Button1Click(Sender:
TObject);RadioGroup1.ItemIndex of

: ADOTable1.IndexFieldNames := ‘ФИО_Клиента’;

: ADOTable1.IndexFieldNames := ‘Дата_заселения’;

: ADOTable1.IndexFieldNames := ‘Номер_комнаты’;

end;;

Код отмены применения сортировки:

procedure TForm1.Button2Click(Sender:
TObject);.ItemIndex:=-1;.IndexFieldNames := ‘ID_Klienty’;

end;

Результаты работы сортировок приведены на рисунках 2.9-2.12.

Рисунок .2.9 Форма перед сортировкой

Рисунок 2.10 Форма после применения сортировки по ФИО клиента

Рисунок 2.11 Форма после применения сортировки по дате заселения

Рисунок 2.12 Форма после применения сортировки по номеру комнат

Код фильтрации:

TForm2.Button1Click(Sender:
TObject);.Filtered:=true;RadioGroup1.ItemIndex of

: ADOTable1.Filter := ‘ФИО_клиента=’+#39+edit1.Text+#39;

: ADOTable1.Filter := ‘Статус=’+#39+edit1.Text+#39;

: ADOTable1.Filter := ‘Национальность=’+#39+edit1.Text+#39;

: ADOTable1.Filter := ‘Пол=’+#39+edit1.Text+#39;

: ADOTable1.Filter := ‘Цель приезда=’+#39+edit1.Text+#39;

end;;

Пример работы поиска приведен на рисунках 2.13 и 2.14.

Рисунок 2.13 Форма перед применением фильтрации

Рисунок 2.14 Форма после применения фильтрации

В данное ПС, я решил добавить отдельную форму на которой можно будет
работать с БД с применением SQL запросов.С помощью SQL можно будет создавать
свои запросы и работать с базой данных. Вводимый код для обработчика на кнопку
открытия формы подобен общему коду для открытия других форм примененный выше.

Для удобства работы с базой данных лучше добавить компонент Memo1, в
котором описана структура базы данных (таблицы и поля).

Также на форму были добавлены следующие компоненты: ADOQuery1,
DataSourse1, Memo2, Button1. В компоненте Memo2 будет вводиться SQL запрос, а
Button1 будет применять этот запрос.

Таблица 2.10. Свойства компонентов на форме SQL запросов

Компонент

Свойство

Значение

ADOQuery1

Connection

Form1.ADOConnection1

DBGrid1

DataSource

DataSource1

DBNavigator1

DataSource

DataSource1

DataSource1

DataSet

ADOQuery1

Код процедуры для кнопки Button1 приведен ниже:

procedure TForm5.Button1Click(Sender: TObject);.Close;.SQL.Text:=Memo2.Text;

ADOQuery1.Open;;

Примеры интерфейсов формы до и после применения SQL запросов представлены
на рисунках 2.15-2.17.

Рисунок 2.15 Форма до применения SQL запроса

Рисунок 2.16 Форма после применения первого SQL запроса

Рисунок 2.17 Форма после применения второго SQL запроса

Выводы

Информационная система была создана. Система была создана с
использованием технологии ADO ,в системе были применены SQL-запросы. В
дальнейшем может возникнуть необходимость модернизации и улучшения
информационной системы. Это можно осуществить путем введения в систему новых
функций, добавление новых таблиц, улучшения системы защиты.

Заключение

Таким образом, в ходе курсовой работы были рассмотрены этапы создания
информационной системы: изучение специальной литературы, исследовование
технологии ADO, описание предметной области; проектирование программного
комплекса, выполнение программной реализации. Результатом рассмотрения этапов
стала готовая информационная система.

Курсовая работа показала, что проектирование имеет целью обеспечить
эффективное функционирование АИС и взаимодействие со специалистами,
использующими в сфере деятельности конкретного экономического объекта ЭВМ и
развитие средства коммуникации для выполнения своих профессиональных задач и
принятия управленческих решений. Именно качественное проектирование
обеспечивает создание такой системы, которая способна функционировать при постоянном
совершенствовании ее технических, программных, информационных составляющих, то
есть её технологической основы, и расширять спектр реализуемых управленческих
функций и объектов взаимодействия. Внедрение АИС на предприятии существенно
облегчает работу с документами, что дает возможность быстро и оперативно решать
многие вопросы. Успешная эксплуатация разработанной и внедренной системы дает
заметный экономический эффект, за счет снижения затрат, освобождения рабочего
времени специалистов, повышения качества и надежности учета, облегчения
оформления сопровождающей документации и отчетности.

Список использованных источников

1.
Автоматизированные системы управления в гостинице // Информационные системы в
гостиницах. URL:

<http://student.zoomru.ru/informat/avtomatizirovannye-sistemy-upravleniya-v-gostinice/19502.154718.s3.html>
(17.06.2012)

. Работа с внешними базами
данных // Информационный портал. URL:
<http://its.luguniv.edu.ua/~Donchenko/inform_teor/VBA/Chapter%2015/1.htm>
(20.11.12)

. Сохранение базы данных Jet
4.0 в работоспособном состоянии // Поддержка Microsoft. URL:
<http://support.microsoft.com/kb/303528/ru> (25.11.12)

. Морозов М.А., Морозова Н.С.
Информационные технологии в социально-культурном сервисе и туризме. М.:
“Академия”, 2009. – 240 с. (17.06.2012) 1. Общие сведения о Microsoft
Access // Таурион. URL: <http://www>. taurion.ru/access/1/2 (08.11.12)

. Основы ADO //
Иллюстрированный самоучитель по Delphi 7 для профессионалов. URL:
<http://www.realcoding.net/teach/Delphi7_prof/Glava19/> Index2.html
(08.11.12)

. Сохранение базы данных Jet
4.0 в работоспособном состоянии // Поддержка Microsoft. URL:
<http://support.microsoft.com/kb/303528/ru> (25.11.12)

. История языка. Mateo
edition// Pawno-Info программирование в Pawno. URL:
<http://pawno-info.ru/threads/54237-История-языка> (11.06.2012)

. Языки Программирования //
Java. URL: <http://progr-lang.blogspot.com/p/java.html> (15.06.2012)

. Диаграмма потоков данных
(DFD) // E-educ.ru. URL: <http://e-educ.ru/bd14.html> (08.11.12)

10. Теория
DELPHI // Языки программирования. URL: http://www.
maksakov-sa.ru/TeorDelphi/OpisanieDelphi/index.html (16.06.2012)

11. Visual Basic // Языки
Программирования. URL:
<http://progr-lang.blogspot.com/p/visual-basic.html> (15.06.2012)

. Основы ADO //
Иллюстрированный самоучитель по Delphi 7 для профессионалов. URL:
<http://www.realcoding.net/teach/Delphi7_prof/Glava19/> Index2.html
(08.11.12)

Приложение. Листинг кода программы

Unit1;// Главная форма “Регистрационная карта”

{ Private declarations }

{ Public declarations };: TForm1;Unit2, Unit3, Unit4, Unit5;

{$R *.dfm}TForm1.N2Click(Sender:
TObject);;;TForm1.N1Click(Sender: TObject);.Show;.Hide;;TForm1.N3Click(Sender:
TObject);.Show;.Hide;;TForm1.N4Click(Sender: TObject);.Show;.Hide;;TForm1.Button1Click(Sender:
TObject);RadioGroup1.ItemIndex of

: ADOTable1.IndexFieldNames := ‘ФИО_Клиента’;

: ADOTable1.IndexFieldNames := ‘Дата_заселения’;

: ADOTable1.IndexFieldNames := ‘Номер_комнаты’;;;TForm1.Button2Click(Sender: TObject);.ItemIndex:=-1;.IndexFieldNames
:= ‘ID_Klienty’;;TForm1.N5Click(Sender: TObject);.Show;.Hide;;.; // Форма “Клиенты”, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,, Menus, ExtCtrls, DBCtrls, Grids, DBGrids, DB, ADODB,
StdCtrls;= class(TForm): TMainMenu;: TMenuItem;: TADOTable;: TDataSource;:
TDBGrid;: TDBNavigator;: TButton;: TEdit;: TRadioGroup;:
TButton;Exit1Click(Sender: TObject);Button1Click(Sender:
TObject);Button2Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm2;Unit1;

{$R *.dfm}TForm2.Exit1Click(Sender:
TObject);.Show;.Hide;;TForm2.Button1Click(Sender:
TObject);.Filtered:=true;RadioGroup1.ItemIndex of

: ADOTable1.Filter := ‘ФИО_клиента=’+#39+edit1.Text+#39;

: ADOTable1.Filter := ‘Статус=’+#39+edit1.Text+#39;

: ADOTable1.Filter := ‘Национальность=’+#39+edit1.Text+#39;

: ADOTable1.Filter := ‘Пол=’+#39+edit1.Text+#39;

: ADOTable1.Filter := ‘Цель приезда=’+#39+edit1.Text+#39;;;TForm2.Button2Click(Sender:
TObject);.Filtered:=false;.ItemIndex:=-1;;.Unit3; // форма “Номера комнат”, Messages,
SysUtils, Variants, Classes, Graphics, Controls, Forms,, Menus, DB, ADODB,
ExtCtrls, DBCtrls, Grids, DBGrids;= class(TForm): TMainMenu;: TMenuItem;:
TDataSource;: TDBGrid;: TDBNavigator;: TADOTable;Exit1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm3;Unit1;

{$R *.dfm}TForm3.Exit1Click(Sender:
TObject);.Show;.Hide;;.Unit4; //Форма “Номера комнат”, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,, Menus, DB, ADODB, ExtCtrls, DBCtrls, Grids, DBGrids;=
class(TForm): TMainMenu;: TMenuItem;: TDataSource;: TDBGrid;: TDBNavigator;:
TADOTable;Close1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm4;Unit1;

{$R *.dfm}TForm4.Close1Click(Sender: TObject);.Show;.Hide;

end;.Unit5; // Форма “Работа С БД с применением SQL запросов”

interface, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,, StdCtrls, Grids, DBGrids, DB, ADODB, Menus, ExtCtrls,
DBCtrls;= class(TForm): TDBGrid;: TMemo;: TMemo;: TMainMenu;: TMenuItem;:
TButton;: TADOQuery;: TDataSource;: TDBNavigator;Close1Click(Sender:
TObject);FormCreate(Sender: TObject);Button1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm5;Unit1;

{$R *.dfm}TForm5.Close1Click(Sender:
TObject);.Show;.Hide;;TForm5.FormCreate(Sender:
TObject);.Clear;;TForm5.Button1Click(Sender:
TObject);.Close;.SQL.Text:=Memo2.Text;.Open;;.

Технология организации доступа к БД

Реферат: Технология организации доступа к БД

РефератПомощь в написанииУзнать стоимостьмоей работы

ADO является интерфейсом программного уровня к OLE DB, парадигме доступа к данным от MS. OLE DB обеспечивает высокопроизводительный доступ ко многим источникам данных. ADO и OLE DB вместе представляют собой основу стратегии Универсального доступа к данным (UniversalDataAccess). OLE DB дает возможность универсального доступа ко многим данным и предоставляет разработчикам возможность сделать это… Читать ещё >

  • Выдержка
  • Другие работы
  • Помощь в написании

Технология организации доступа к БД (реферат, курсовая, диплом, контрольная)

Для работы программного средства с данными в дипломном проекте используется технология ADO.

Доступ к данным является важнейшим требованием при разработке современных бизнес-приложений. Технология ODBC обеспечивает доступ к реляционным базам данных и это первый шаг на пути решения проблемы. Однако, когда разработчики хотят включить в свои проекты нереляционные источники данных или работать в средах, подобных Интернет, они сталкиваются с дилеммой — либо разрабатывать собственные парадигмы доступа к данным, либо работать на уровне API, что несовместимо с новыми средами. ActiveX объекты доступа к данным (ADO) решают эту дилемму и обеспечивают единую модель, которая работает со всеми источниками данных в различных средах. Таким образом, ADO обеспечивает последовательный, высокопроизводительный доступ к данным, с которыми можно создавать клиентские программы для работы с БД или бизнес-объекты среднего уровня, использующие приложения, инструментарий, язык. ADO — это интерфейс доступа к данным, который необходим для создания одноуровневых и многоуровневых приложений архитектуры клиент/сервер и Web-ориентированных информационных систем.

Технология ADO была впервые применена в MicrosoftInternetInformationServer как интерфейс доступа к БД. Использование ADO позволяет минимизировать сетевой траффик в ключевых Internet-сценариях и уменьшить количество промежуточных уровней между клиентским приложением и источником данных. ADO легко использовать, так как данная технология применяет привычную систему вызовов — интерфейс Автоматизации OLE, доступный в большинстве средств разработки приложений. Технология ADO легка в применении и изучении и во многом подобна RDO и DAO. Например, она использует те же соглашения языка. Технология ADO также поддерживает аналогичную семантику и поэтому может быть легко освоена разработчиками ПО.

ADO является интерфейсом программного уровня к OLE DB, парадигме доступа к данным от MS. OLE DB обеспечивает высокопроизводительный доступ ко многим источникам данных. ADO и OLE DB вместе представляют собой основу стратегии Универсального доступа к данным (UniversalDataAccess). OLE DB дает возможность универсального доступа ко многим данным и предоставляет разработчикам возможность сделать это достаточно легко. Так как ADO находится на вершине OLE DB, то применение ADO имеет все преимущества Универсального доступа к данным, которое обеспечивает OLE DB.

Показать весь текст

Заполнить форму текущей работой

Другие работы

Курсовая: Управление проектом внедрения ECM-системы предприятия

Управление проектом внедрения ECM-системы предприятия

Рабочей группой Проекта. Запрос на изменение доводится до соответствующего Руководителя Проекта. Шаблон приведен в Приложении А. Соответствующий Руководитель проекта анализирует поступившие запросы на изменения, существенные предложения выносит на обсуждение в Рабочую группу Проекта. Рабочая группа Проекта принимает решение по внесённому изменению, которое фиксируется в Протоколе совещания…

Курсовая

Реферат: Список использованных источников

Список использованных источников

Общегосударственный классификатор Республики Беларусь «Виды ЭКОНОМИЧЕСКОЙ ДЕЯТЕЛЬНОСТИ ОКРБ 005−2006»: Постановление Государственного комитета по стандартизации Республики Беларусь от 28 декабря 2006 г. № 65 (в ред. постановлений Госстандарта от 17.08.2007 № 43, от 07.08.2008 № 42, от 30.07.2009 № 37). Астафьева, В. А. Технологии автоматизированной обработки учетно-аналитической информации…

Реферат

Реферат: Используемые элементы. Разработка программного продукта для системы запуска и остановки двигателя

Используемые элементы. Разработка программного продукта для системы запуска и остановки двигателя

Bluetoothмодули могут иметь два режима работы — master (ведущий) и slave (ведомый), причём для модулей HC-04 и HC-06 определённый режим уже установлен на заводе-изготовителе и меняться не может, разве что перепрошивкой (например HC-04-M — master или HC-06-S — slave). А вот модули HC-03 и HC-05 позволяют выбрать нужный режим работы с помощью АТ-команд, причём изначально в этих модулях установлен…

Реферат

Дипломная: Использование современных информационно-коммуникационных технологий в обучении иностранному языку на профильном уровне

Использование современных информационно-коммуникационных технологий в обучении иностранному языку на профильном уровне

Учащиеся работают в группах (3−4 человека). В процессе работы учащиеся могут видоизменять тему, вносить свои предложения по вопросам, которые их больше интересуют. Результаты своего труда школьники должны творчески оформить на компьютере: написать сочинение, статью, рекламу, собрать и обработать статистические данные, спроектировать альбом, коллаж, газету, книгу и т. п., и в итоге организовать…

Дипломная

Реферат: Направления развития информационных технологий

Направления развития информационных технологий

Новые технологии являются главной движущей силой в дополнение к существующим силам мирового рынка. Всего несколько ключевых компонентов — микропроцессоры, локальные сети, робототехника, специализированные АРМ (автоматизированные рабочие места), датчики, программируемые контроллеры — превратили в реальность концепцию автоматизированного предприятия. Однако в настоящее время технология может…

Реферат

Реферат: Введение. Разработка базы данных "Агентство недвижимости"

Введение. Разработка базы данных “Агентство недвижимости”

Для управления и использования баз данных существуют системы управления базами данных (СУБД) — важнейший компонент информационной системы. Для создания и управления информационной системой СУБД необходима в той же степени, как для разработки программы на алгоритмическом языке необходим транслятор. Решение задания подразумевает использование программной среды, позволяющей осуществлять создание…

Реферат

Реферат: Классификация моделей. Вычислительные системы, сети и телекоммуникации. Моделирование сетей

Классификация моделей. Вычислительные системы, сети и телекоммуникации. Моделирование сетей

Аналоговое моделирование основано на аналогии процессов и явлений, имеющих различную физическую природу, но одинаково описываемых формально (одними и теми же математическими уравнениями, логическими схемами и т. п.). В качестве аналоговых моделей используются механические, гидравлические, пневматические системы, но наиболее широкое применение получили электрические и электронные аналоговые…

Реферат

Реферат: Метод и абстрактная модель мандатного контроля доступа

Метод и абстрактная модель мандатного контроля доступа

Идея рассматриваемого подхода к контролю доступа на основе меток безопасности (мандатов) в общем случае состоит в том, что если возможно иерархическое упорядочивание (категорирование) субъектов и объектов доступа по какому-либо признаку (признакам), то для каждой категории можно задать свою метку безопасности — число. Правила доступа при этом можно определять «по умолчанию», на основании…

Реферат

Реферат: Имитационная модель производственного предприятия

Имитационная модель производственного предприятия

Для проверки данных ограничений можно использовать специальную процедуру, написанную на языке PLUS. Язык PLUS представляет собой мощный язык программирования, возможности которого можно использовать практически в любой точке модели GPSS World. Процедуры PLUS должны быть определены до их использования в программе GPSS. Определение происходит внутри команды PROCEDURE, а использование — путем…

Реферат

Реферат: Хронология важнейших событий на пути появления первых компьютерных сетей

Хронология важнейших событий на пути появления первых компьютерных сетей

Протяженность и качество линий связи. Локальные компьютерные сети по определению отличаются от глобальных сетей небольшими расстояниями между узлами сети. Это в принципе делает возможным использование в локальных сетях более качественных линий связи. Сложность методов передачи данных. В условиях низкой надежности физических каналов в глобальных сетях требуются более сложные, чем в локальных…

Реферат

Реферат: Структура библиотеки. Стандартная библиотека шаблонов

Структура библиотеки. Стандартная библиотека шаблонов

Описание разъясняет структуру библиотеки. Если программные компоненты сведены в таблицу как трёхмерный массив, где одно измерение представляет различные типы данных (например, int, double), второе измерение представляет различные контейнеры (например, вектор, связный список, файл), а третье измерение представляет различные алгоритмы с контейнерами (например, поиск, сортировка, перемещение…

Реферат

Реферат: Реализация численных экспериментов в системе AnyLogic

Реализация численных экспериментов в системе AnyLogic

Если требуется отображать распределения результатов моделирования тина «Набор данных» с помощью двумерных гистограмм, щелкните еще раз мышыо, но кнопке Далее. Будет открыта страница инструмента «Мастер двумерных гистограмм». Здесь можно задать свойства двумерных гистограмм, которые будут визуализировать собираемую статистику. Каждая гистограмма задается в отдельной строке таблицы: заголовок…

Реферат