Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 11.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
108.03 Кб
Скачать

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

Извлекается информация обо всех индексах для указан­ной таблицы.