Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Поддержка 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, что говорит о том, что они имеются и у множества других предназначенных для работы с БД компонент.




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 560; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.