- •1. Подключение к серверам баз данных
- •1.1. Способы подключения к базе данных
- •1.2. Подключение к базе данных при помощи компонента Database
- •1.3. Доступ к базам данных при помощи средств dbExpress
- •2. Обзор компонентов dbExpress
- •2.1. Компонент sqlConnection
- •2.2. Компонент sqlDataSet
- •2.3. Компонент solMonitor
- •2.4. Компонент SimpleDataSet
1.3. Доступ к базам данных при помощи средств dbExpress
Технология dbExpress была введена компанией Borland в Delphi 6. Она обладает тремя важными преимуществами.
Во-первых, средства dbExpress гораздо проще с точки зрения установки по сравнению с их предшественником BDE.
Во-вторых, доступ к SQL-серверам через dbExpress намного эффективнее, чем при помощи BDE. Для организации эффективного доступа к данным в dbExpress используются однонаправленные наборы данных.
В-третьих, технология dbExpress является межплатформенной. Это означает, что разработанные приложения могут использоваться в среде Kylix на платформе Linux.
Однонаправленные наборы данных
Суть однонаправленных наборов данных состоит в том, что для них не выделяется область оперативной памяти (буферизация или кэширование) с целью организации навигации или модификации. В отличие от dbExpress, в BDE использовались двунаправленные наборы данных с буферизацией в оперативной памяти. Однонаправленные наборы данных более быстродействующие, однако они обладают некоторыми ограничениями.
При навигации поддерживаются только методы First ( ) и Next( ). Попытка вызова метода Last ( ) или Prior ( ) приведет к возникновению исключения.
Невозможно изменить данные, так как для них не выделяются буферы редактирования. Тем не менее, для редактирования однонаправленных наборов данных можно использовать другие компоненты.
Один из таких компонентов, SimpleDataSet, будет рассмотрен в конце этого занятия.
Не поддерживается фильтрация, потому что при работе с однонаправленными наборами данных не создается буферов для множества записей.
2. Обзор компонентов dbExpress
Перед тем, как приступить к разработке приложения управления базой данных "Персонал", кратко рассмотрим компоненты, расположенным на вкладке dbExpress. К ним относятся компоненты SQLConnection, SQLDataSet, SQLTable, SQLQuery, SQLStoredProc, SQLMonitor и SimpleDataSet.
Функции компонентов SQLTable, SQLQuery и SQLStoredProc реализованы в компоненте SQLDataSet, поэтому отдельно они здесь не рассматриваются.
2.1. Компонент sqlConnection
Для подключения к базе данных воспользуемся компонентом SQLConnection dbExpress.
Объекты класса TSQLConnection используют два конфигурационных файла: dbxdrivers.ini и dbxconnections.ini. Эти файлы при установке размещаются в каталоге \Program Files\Common Files\Borland Shared\DbExpress.
• Файл dbxdrivers.ini содержит перечень всех установленных драйверов dbExpress и их параметры.
• Файл dbxconnections.ini содержит перечень так называемых именованных соединении (named connections), которые по своей сути аналогичны псевдонимам BDE. В этом же файле хранятся и параметры именованных соединений.
Порядок применения компонента SQLConnection для подключения к базе данных подробно рассматривается на следующем лабораторном занятии..
2.2. Компонент sqlDataSet
Компонент SQLDataset используется для извлечения данных из сервера при квдощи однонаправленного курсора. Такие наборы данных используются для отображения содержимого таблиц, а также результатов выполнения запросов или хранимых процедур.
Основными свойствами класса TSQLDataset являются CornmandType и CommandText. Значение свойства CommandType определяет характер использования содержимого свойства CommandText. Возможные значения свойства CommandType перечислены в табл. 12.1,
Таблица 12.1
Возможные значения свойства CommandType
-
CommandType
Содержимое свойства CommandText
ctQuery
SQL-оператор.
ctStoredProc
Имя хранимой процедуры.
ctTable
Имя таблицы, расположенной на сервере баз данных.
Для извлечения всех записей и полей этой таблицы компонент SQLDataset автоматически генерирует SQL-оператор SELECT.
Если свойство CommandType имеет значение ctQuery, то свойство CommandText содержит какой-то SQL-оператор. Например, это может быть оператор SELECT, предназначенный для возврата некоторого набора данных: SELECT * FROM STAFF.
Если свойство CommandType имеет значение ctTable, то свойство ComraandText содержит имя таблицы, расположенной на сервере баз данных. В этом случае поле свойства CommandText в инспекторе объектов примет вид раскрывающего списка. В случае подключения к SQL-серверу все SQL-операторы, необходимые для извлечения данных, генерируются автоматически.
Если свойство CommandType имеет значение ctStoredProc, то свойство CommandText содержит имя хранимой процедуры. Для выполнения указанной хранимой процедуры лучше использовать метод TSQLDataSet .ExecSQL( ), а не присваивать значение True свойству Active. Кроме того, метод ExecSQL() может быть использован в том случае, если свойство CommandType имеет значение ctQuery, и SQL-оператор не возвращает никакого набора данных (команды INSERT, UPDATE и т.д.)-
Извлечение метаданных
Метаданные (metadata) — это информация о самой базе данных. Их также можно извлекать при помощи компонента SQLDataset. Для этого используется процедура TSQLDataset. SetSchemaInfo(), в которой указывается требуемый тип информации. Объявление функции SetSchemaInfo имеет следующий вид:
procedure SetSchemalnfo (SchemaType: TSchernaType;
SchemaObj ectName, SchemaPattern: string);
В параметре SchemaType указывается тип извлекаемой информации, в параметре SchemaObjectName —имя таблицы или процедуры в случае запроса информации о столбце или индексе, а в параметре SchemaPattern — маска SQL-шаблона для фильтрации возвращаемого набора данных.
В табл. 12.2 перечислены все типы информации о структуре, которые могут извлекаться при помощи процедуры SetSchemaInfo().
Таблица 12.2
Возможные значения параметра ScheraaType
-
Значение
параметра
SchemaType
Описание
stNoSchema
Информация о структуре не извлекается. В место метаданных с сервера возвращается набор данных, соответствующий
указанному запросу или хранимой процедуре.
stTables
Извлекается информация обо всех таблицах данных на
сервере, которые удовлетворяют критерию, указанному в свойстве SQL-соединения ТаbleSсоре.
stSysTables
Извлекается информация обо всех системных таблицах.
Не все SQL-серверы для хранения метаданных используют системные таблицы. В этом случае будет возвращен пустой набор данных.
stProcedures
Извлекается информация обо всех хранимых процедурах на сервере.
stColumns
Извлекается информация обо всех столбцах (полях)
в указанной таблице.
stProcedureParams
Извлекается информация обо всех параметрах указанной
хранимой процедуры.
stlndexes
Извлекается информация обо всех индексах для указанной таблицы.
