Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delphi и базы данных.docx
Скачиваний:
33
Добавлен:
19.05.2015
Размер:
227.39 Кб
Скачать

Поддержка bde в vcl

Для создания приложений, работающих с БД через BDE, в VCL предусмотрена группа компонентов, расположенная на закладке BDE палитры компонентов. Из представленных 8 компонентов для нас сейчас наибольший интерес представляют 2, а именно Database и Table.

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

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

Свойство

Тип

Описание

AliasName

String

Определяет псевдоним BDE для подключения

Connected

Boolean

Определяет, установлено или нет соединение с БД

DatabaseName

String

Определяет имя БД, ассоциированное с данным компонентом

Directory

String

Определяет рабочий каталог для БД Paradox или dBase

DriverName

String

Определяет имя драйвера BDE для данной БД

Exclusive

Boolean

Включает монопольный доступ к БД

InTransaction

Boolean

Указывает, выполняется ли в данный момент транзакция

KeepConnection

Boolean

Определяет, должно ли приложение оставаться подключенным к БД, когда активных соединений нет

Params

TStrings

Определяет список дополнительных параметров для псевдонима BDE

SessionName

String

Определяет имя сессии для данного компонента

ReadOnly

Boolean

Включает режим доступа к данным только на чтение

Пожалуй, наиболее важным свойством является DatabaseName: указав в качестве значения этого свойства один из уже определенных в BDE псевдонимов, мы получим готовый к использованию компонент. Еще одно свойство - Connected - отвечает за непосредственную установку связи с БД. Таким образом, указав в качестве значения свойства DatabaseName "DATA1", и установив свойство Connected в истину, мы подключимся к БД.

Довольно интересной особенностью компонента Database является возможность создания псевдонимов БД, действующих в рамках создаваемого приложения. Прежде всего, можно указать в качестве значения свойства Alias то же значение DATA1, выбрав его из списка, а в качестве DatabaseName указать какое-либо произвольное значение (например, MyData). Таким образом, для других компонент, имеющих свойство DatabaseName можно будет указывать MyData в качестве значения этого свойства.

В то же время, если бы у нас не был определен псевдоним DATA1, или же по каким-либо причинам нам не хотелось бы его использовать, то мы могли бы "с нуля" создать псевдоним для данного приложения. Для этого потребуется указать те же параметры, что и при создании псевдонима средствами BDE Administrator, а именно тип драйвера, путь к БД и собственно псевдоним. Код получится примерно таким:

Database1.DatabaseName:='MyData1'; // псевдоним Database1.DriverName:='STANDARD'; // драйвер Paradox Database1.Connected:=true; // активируем компонент Database1.Directory:='C:\Data'; // устанавливаем путь к файлам данных

Вместе с тем такое свойство, как DatabaseName предпочтительно все же задавать не во время выполнения, а в режиме разработки через инспектор объекта. Это позволит ссылаться на БД из других компонент, указывая в их свойстве DatabaseName, так же уже на этапе визуального проектирования приложения.

Одним из таких компонент, имеющим свойство DatabaseName, как раз и является Table. Если Database представляет собой базу данных в целом, то Table - это представление единичной таблицы из БД. Следует сразу отметить, что Table может обращаться к таблицам БД как через посредство компонента Database, ссылаясь на определенное в нем свойство DatabaseName, так и напрямую, если в свойстве DatabaseName компонента Table указать один из определенных в BDE псевдонимов. Разумеется, компонент Table имеет и другие свойства - они приведены в таблице 18.3.

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

Свойство

Тип

Описание

Active

Boolean

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

CanModify

Boolean

Указывает, может ли приложение изменять содержимое таблицы Paradox или dBase

DatabaseName

String

Определяет имя БД, ассоциированное с данным компонентом

DataSource

TDataSource

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

DefaultIndex

Boolean

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

Exclusive

Boolean

Включает монопольный доступ к данной таблице Paradox или dBase

Exists

Boolean

Указывает, существует ли данная таблица в БД

FieldDefs

TFieldDefs

Указывает на список полей, определяющих данные

Filter

String

Определяет условие, по которому будет происходить выборка полей для показа

Filtered

Boolean

Определяет, является ли фильтр включенным

FilterOptions

TFilterOptions

Определяет набор флагов для фильтра

IndexDefs

TIndexDefs

Предоставляет информацию о индексах таблицы

IndexFieldCount

Integer

Указывает на количество полей, использованных в текущем индексе

IndexFieldNames

String

Определяет список полей, используемых в качестве индекса (через запятую)

IndexFields

array of Tfield

Список индексов таблицы

IndexFiles

TStrungs

Определяет список файлов с индексами для таблиц dBase

IndexName

String

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

MasterFields

String

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

MasterSource

TDataSource

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

SessionName

String

Определяет имя сессии для данного компонента

ReadOnly

Boolean

Определяет режим доступа к таблице

TableName

String

Определяет имя таблицы (имя файла для таблиц dBase или Paradox)

TableType

TTableType

Определяет тип таблицы. Может принимать значения ttDefault (тип определяется по расширению файла), ttParadox, ttDBase, ttFoxPro и ttASCII

Здесь следует оговориться, что на самом деле некоторые свойства лишь унаследованы компонентом Table от своих предков. Соответственно, мы можем их встретить и в других компонентах, связанных с БД. В частности, это свойство Active, унаследованное от класса TDataSet - общего предка всех БД-компонент, предоставляющих непосредственных доступ к данным. От этого же предка происходит и свойство FieldDefs, позволяющее самостоятельно настроить список обрабатываемых полей. А группа свойств, связанных с отбором данных (Filter, Filtered и FilterOptions) являются частью класса TBDEDataSet - наследника класса TDataSet, ориентированного на работу с базами данных посредством драйверов BDE.

Остановимся на свойстве FilterOptions, которое содержит 2 флага:

  • foCaseInsensitive - строки будут сравниваться без учета регистра символов;

  • foNoPartialCompare - символ "звездочка" (*) в поле фильтра будет интерпретироваться именно как символ, а не как шаблон подстановки.

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

ПРИМЕЧАНИЕ Еще одно важное свойство - FieldDefs, являющееся списком объектов - полей TField, будет рассмотрено вместе с самими полями позже, в главе, посвященной непосредственной работе с данными.

Для использования таблицы достаточно указать значения для свойств DatabaseName и TableName. Например, если продолжить пример с созданием псевдонима для компонента Database, то после последней строчки кода, устанавливающей значение для свойства Directory, достаточно добавить:

Table1.DatabaseName:='MyData1'; // устанавливаем значение БД на псевдоним Table1.TableName:='Customer'; // в имени таблицы расширение не обязательно Table1.Active:=true; // делаем таблицу подключенной

Дальнейшее использование компонента Table чаще всего сводится к тому, что он, представляя собой таблицу БД, позволяет производить над ней ряд манипуляций, включая редактирование данных, перемещение по записям и т.д. Для этого используются методы, которых у компонента Table, с учетом всех наследований, имеется около сотни. Впрочем, многие из них нельзя назвать повседневно необходимыми. Из наиболее востребованных можно отметить методы First и Last, Next и Prior, используемые для навигации по записям таблицы, а так же Append, Delete и Insert, которые используются для добавления и удаления записей. Следует отметить, что все эти методы являются унаследованными от класса TDataSet, что говорит о том, что они имеются и у множества других предназначенных для работы с БД компонент.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]