ПРОЕКТИРОВАНИЕ КЛИЕНТСКОЙ ЧАСТИ

КОМПОНЕНТЫ ДОСТУПА К ДАННЫМ

При работе с локальными базами данных для доступа к данным достаточно было установить компонент ТТаЫе и указать алиас базы данных (или полный путь к базе данных) и имя таблицы. Два других компонента TDatabase и Transaction устанавливались неявно, и параметры соединения с базой данных использовались «по умолчанию».

В случае работы с удаленными базами, и конкретно с системой управления базами данных InterBase, компоненты TIBDatabase и TIBTransaction необходимо устанавливать в приложении клиента явно и определять их параметры. С помощью этих компонентов осуществляется доступ к файлу gdb и обеспечивается выполнение процедур управления данными (извлечение, добавление, редактирование и удаление записей). Непосредственный доступ к таблицам, размещенным внутри файла gdb, выполняется с помощью компонентов TIBQuery, TStoredproc и TIBDataSet.

Вкладка InterBase

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

Значения свойствам можно присваивать программно или с помощью Object Inspector.

Компонент IBDatabase |g

Компонент IBDatabase обеспечивает доступ к файлу gdb, при этом обязательно заполняются первые три свойства.

Основные свойства и методы:

property DatabaseName: string; — указывается алиас базы данных, если он был определен при регистрации базы данных на сервере, или полный путь к файлу базы данных (•gdb);

property DefaultTransaction: TIBTransaction; — указывается

ссылка на компонент TIBTransaction;

property Connected: Boolean; — если свойство содержит True, то установлен сеанс связи с базой данных, имя которой указано в свойстве DatabaseName. Если свойство содержит False, то база данных недоступна для пользователя.

Этих трех свойств достаточно для нормальной работы пользователя с базой данных. Остальные значения свойств будут определены «по умолчанию»;

property Name: string; — содержит имя компонента IBDatabase и его порядковый номер. В общем случае приложение клиента может работать с несколькими базами данных одновременно, используя несколько компонентов доступа IBDatabase или один компонент IBDatabase последовательно подключается к нужным базам данных. Содержимое свойства Name используется в написании программных кодов. Пользователь может присвоить компоненту IBDatabase любое имя, отличное от стандартного, при этом ранее написанные программные коды будут автоматически исправлены. Имя компонента пишется буквами английского алфавита, допускается использование цифр и символа «_» (подчеркивание);

property Params: TStrings; — содержит коллекцию параметров, которая передается серверу в момент установления сеанса связи. Для заполнения этого свойства используется специальный редактор (рис. 8.1), который вызывается из

Р String List Editor

3 lines user_name=U S E R_l N S

password=user

lc_ctype=WIN1251

Code Editor...

OK

Cancel

Help

Рис. 8.1. Редактор параметров

Object Inspector с помощью кнопки которая расположена в строке этого свойства. Задать или изменить свойства компонента IBDatabase можно также с помощью редактора «Database Component Editor» (рис. 8.2), который вызывается из контекстного меню командой Database Editor.;

m

Database Component Editor

Remote

Protocol:

Connection ? Local

Server:

Browse

database:_

IC: B D J B_D E LPHI SB ookB 0 0 K. G D B|

г Database Parameters

User Name:

Settings:

(USER JNS

user_name=USER_INS

password=user

lc_ctype=WIN1251

Password:

user

SSLRole:

Character Set: |WIN1251 ?

f* Login Prompt

OK

Cancel

Test

Help

Рис. 8.2. Редактор компонента

property SQLDialect: Integer; — содержит номер диалекта языка SQL, в котором создана база данных. Свойство Readonly,

property IsReadOnly: Boolean; — если свойство содержит значение, то базу данных можно только читать. В противном случае разрешено вносить изменения. Свойство Readonly,

procedure Close; — разрывает соединение с базой данных и закрывает все наборы данных;

procedure Close DataSets; — закрывает все наборы данных, но сохраняет соединение с базой данных; procedure Create Database; — создает новую базу данных, используя параметры, указанные в свойстве Params; procedure Drop Database; — удаляет базу данных, имя которой указано в свойстве Database Name', procedure GetFieldNames(const TableName: string: List: TStrings); — возвращает в параметре List имена полей таблицы, имя которой указано в параметре TableName', procedure GetTableNames(List: TStrings; SystemTab/es: Boolean); — возвращает в параметре List имена всех таблиц текущей базы данных. Если параметр содержит значение True, то возвращаются также имена всех системных таблиц; procedure Open; — устанавливает соединение с базой данных, имя которой указано в свойстве DatabaseName.

Свойства, определенные в любом из редакторов, действуют «по умолчанию» при подключении клиента к базе данных.

Компонент IBTransaction jt^j

Компонент IBTransaction обеспечивает выполнение транзакций в выбранной базе данных и работает совместно с компонентом IBDatabase. Для настройки компонента IBTransaction на совместную работу с компонентом IBDatabase достаточно заполнить первые два свойства.

Основные свойства и методы:

property DefaultDatabase: TIBDatabase; — содержит ссылку на компонент IBDatabase',

property Active: Boolean; — если свойство содержит значение True, то компонент активен и разрешено управление данными (выполнение транзакций);

property Name: string; — имя компонента IBTransaction (аналогично компоненту IBDatabase)',

m

J*

IB Trans

Transaction Editor...

InterbaseExpress 6

г

Edit

?

4

DSJ

Control

?

Position

?

г

4

Tab Order...

DSJ

р=

|ЕЭ

!С=>

>?

Creation Order...

Рис. 8.3. Редактор компонента

>DM

?ns

IBDatabasel

-=?J

IB SQL

IBQJDBRA

? If

IB SQL

IBQ.SPOS

RE-Л

property Params: TStrings; — содержит параметры по управлению исполнением транзакций (подробнее см. гл. 10). Заполнение этого свойства производится с помощью двух редакторов, аналогично компоненту /ВDatabase. Уровень изоляции транзакций определяется в диалоговой панели «Transaction Editor» включением одной из кнопок радиогруппы « Transaction Properties» (рис. 8.4);

Определение уровня изоляции транзакций

Рис. 8.4. Определение уровня изоляции транзакций

property DatabaseCount: Integer; — содержит количество баз данных, на которые направлена текущая транзакция. Свойство Readonly,

property IdleTimer: Integer; — задает время в миллисекундах, по истечении которого автоматически выполняется действие, указанное в свойстве DefaultAction property Default Action: TTransactionAction; — свойство содержит одну из констант завершения транзакции: taCommit — подтвердить транзакцию; taRollback — откатить транзакцию;

ta Commit Retaining — подтвердить транзакцию и сохранить ее контекст;

ta Rollback Retaining — откатить транзакцию и сохранить ее контекст;

property InTransaction: Boolean; — если свойство содержит значение True, то текущая транзакция активна; procedure Commit; — подтверждает текущую транзакцию и завершает ее;

procedure CommitRetaining; — подтверждает текущую транзакцию и завершает ее, но сохраняет контекст транзакции; procedure Rollback; — откатывает текущую транзакцию и завершает ее;

procedure Rollback Retaining; — откатывает текущую транзакцию и завершает ее, но сохраняет контекст транзакции; procedure StartTransaction; — запускает новую транзакцию. Если текущая транзакция не завершена, то возбуждается исключительная ситуация.

Компонент IBQuery ijjif.

Компонент предназначен для передачи на сервер ранее сформированного запроса пользователя и хранения полученного от сервера ответа (набора данных).

Основные свойства и методы:

property Database: TIBDatabase; — содержит ссылку на компонент доступа к базе данных;

property SQL: TStrings; — содержит текст запроса, направляемого серверу базы данных;

property Active: Boolean; — если свойство содержит значение True, то пользователю доступен набор данных, хранящийся в компоненте, и этот набор данных может быть отображен в визуальном компоненте, например в DBGrid

property Name: string; — содержит имя компонента IBQuery (аналогично компоненту IВ Database)',

property Transaction: TIBTransaction; — содержит ссылку на компонент IBTransaction. Свойство сложное и содержит константы по управлению выполнением транзакций (подробнее см. гл. 10);

property CachedUpdates: Boolean; — если свойство содержит значение True, то для компонента ТIBQuery создан кэш;

property UpdateObject: TI BDataSetUpdateObject; — содержит ссылку на компонент TIBUpdateSQL, если задан режим кэширования изменений;

procedure ExecSQL; — метод, реализующий выполнение запросов действия (INSERT, UPDATE и DELETE). После выполнения любого из запросов действия необходимо предусмотреть процедуру обновления данных.

Компонент IBDataSet

Компонент IBDataSet считается более современным по отношению к компонентам IBQuery и IBTable и рекомендуемым к использованию.

Основные свойства и методы:

property DeleteSQL: TStrings; — содержит запрос на удаление записи;

property InsertSQL: TStrings; — содержит запрос на добавление записи;

property ModifySQL: TStrings; — содержит запрос на редактирование записи;

property SelectsQL: TStrings; — содержит запрос на выборку записи (или записей);

property Prepared: Boolean; — если свойство содержит значение True, то выполняется подготовка к выполнению запроса. Свойство Readonly.

Свойства Database, Active, Name и Transaction — аналогичны свойствам компонента IBQuery,

procedure ApplyUpdates; — фиксирует кэшированные изменения в таблице, но не завершает транзакцию. Метод возвращает статус кэшированных изменений: cusUnmodified — записи не редактировались; cusModified — записи редактировались; cuslnserted — добавлялись новые записи; cusDeleted — записи удалялись; cusUninserted — записи не вставлялись;

procedure CancelUpdates; — очистка буфера;

procedure Prepare; — подготовка компонента к выполнению запроса;

procedure UnPrepare; — освобождение ресурсов после выполнения запроса.

Запросы действия формируются программно или с помощью специального редактора, который вызывается с помощью кнопки ^1, размещенной в строке соответствующего свойства, и выполняются методом ExecSQL (кроме запроса Select).

Компонент IBStoredProc

Компонент IBStoredProc обеспечивает выполнение хранимой процедуры.

Основные свойства и методы:

property Database: TIBDatabase; — содержит ссылку на компонент IBDatabase',

property StoredProcName: string; — содержит имя вызываемой хранимой процедуры;

property Params: TStrings; — содержит описание характеристик хранимой процедуры: идентификатор параметра и имя параметра. Для описания характеристик можно воспользоваться специальным редактором, который вызывается с помощью кнопки ;

property Paran Count: Integer; — содержит количество параметров хранимой процедуры. Свойство только для чтения (ReadOnly)

property Prepared: Boolean; — если свойство содержит значение True, то хранимая процедура подготовлена к выполнению (оптимизирована);

procedure ЕхесРгос; — метод, обеспечивающий исполнение хранимой процедуры.

Компонент IBUpdateSQL

Компонент IBUpdateSQL предназначен для подтверждения изменений, внесенных в набор данных. С помощью запроса SELECT создается набор данных в компоненте TIBQuery, снабженном кэшем. Затем в набор данных вносятся изменения (компонент TIBQuery) и потом фиксируются в кэше (компонент TIB UpdatesQL).

Основные свойства и методы:

property CanModify: Boolean; — если свойство содержит значение True, то разрешено редактирование записей набора

данных, размещенного в кэше. Если свойство содержит значение False, то набор данных можно только просматривать;

property InsertSQL: TStrings; — содержит запрос на добавление записи в набор данных;

property ModifySQL: TStrings; — содержит запрос на редактирование записи из набора данных;

property DeleteSQL: TStrings; — содержит запрос на удаление записи из набора данных;

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

procedure ЕхесРгос; — метод, который фиксирует изменение в наборе данных (кэше).

Компонент IBSQL

Компонент IBSQL предназначен для выполнения запросов пользователя в базе данных с минимальными затратами времени и может передавать (через компонент TDataSource) результаты выполнения запроса в визуальные компоненты.

Основные свойства и методы:

property Bof: Boolean; — если свойство содержит значение True, то курсор стоит перед первой записью набора данных. Свойство только для чтения (ReadOnly) property Database: TIBDatabase; — содержит ссылку на компонент IBDatabase',

property Eof: Boolean; — если свойство содержит значение True, то курсор стоит после последней записи набора данных. Свойство только для чтения (Readonly)', property Fields[const Idx: Integer]: TIBXSQLVAR; — открывает индексный доступ к полям набора данных; property Open: Boolean; — если свойство содержит значение True, то набор данных открыт. Свойство только для чтения (Readonly)',

property Prepared: Boolean; — если свойство содержит значение True, то запрос подготовлен к выполнению. Свойство только для чтения (Readonly)',

property RecordCount: Integer; — количество записей в наборе данных. Свойство только для чтения (Readonly); property SQL: TStrings; — содержит текст запроса; property Transaction: TIBTransaction; — указывается ссылка на компонент TIBTransaction; procedure Close; — закрывает запрос; procedure ExecQuery; — выполняет запрос; procedure Next; — перемещает курсор на следующую запись; procedure Prepare; — подготавливает запрос к выполнению. При работе с компонентом IBSQL перемещение курсора по набору данных возможно только в одном направлении — сверху вниз.

 
< Пред   СОДЕРЖАНИЕ     След >