SNK Software
Web Studio Монополия Metaproducts Утилиты Игры
Монополию Web Studio Библиотека
Вебмастер Дельфи Работа на ПК Самоучитель
Для PHP Для Delphi
Веб-дизайн Программирование Компьютеры Девайсы Заметки
SNK Software Индустрия hardware Индустрия software
О студии Портфолио Сопровождение сайтов

Новые материалы

Девайсы:
Сравнительный обзор Nokia Lumia 920 и HTC 8X
Девайсы:
Обзор Nokia Lumia 820 – смартфона на WP8
Вебмастеру:
Настройка Apache, PHP и MySQL для Linux-VPS
Вебмастеру:
VPS на домашнем ПК: настройка сети в VM VirtualBox и Debian
Вебмастеру:
VPS на домашнем ПК: устанавливаем Linux Debian 6
Вебмастеру:
VPS на домашнем ПК: установка VM VirtualBox
Работа на компьютере:
Иные возможности текстового процессора Word
Работа на компьютере:
Вставка объектов
Работа на компьютере:
Таблицы в Word
Работа на компьютере:
Печать и сохранение документов
Работа на компьютере:
Сноски, колонтитулы, оглавление и указатели в Word

Delphi и базы данных

Ознакомившись с основными терминами и понятиями БД, можно перейти к рассмотрению средств, имеющихся в распоряжении разработчика, создающего приложения БД при помощи Delphi. Средства Delphi, предназначенные для работы с БД, можно разделить на 2 категории: инструментарий и компоненты. Инструментарий включает в себя рад дополнительных программ, входящих в поставку Delphi и предназначенных для работы с БД. Что касается компонентов, то в VCL имеется множество специализированных компонент, предназначенных для работы с БД.

Типы БД в Delphi

Хотя Delphi и не является СУБД в классическом понимании этого термина, в частности, у нее нет собственного формата баз данных, она поддерживает как собственные сразу несколько форматов, в частности, dBase и Paradox.

Таблицы dBase являются одним из первых форматов БД, появившихся на ПК, благодаря чему с ними могут взаимодействовать многие СУБД - если и не на прямую, то по крайней мере, имея возможность импортировать и экспортировать данные в этом формате. Более того, с некоторыми оговорками, их можно просматривать и редактировать даже в электронных таблицах, например, в Excel.

Формат dBase является достаточно простым и может использовать для хранения каждой таблицы до 3 файлов:

Таким образом, dBase - это достаточно простой и универсальный формат таблиц. Это о преимуществах, из недостатков же следует отметить такие, как ограничения на имена полей в таблицах: максимальная длина - всего 10 символов, допустимы только латинские буквы и цифры. Сходные ограничения налагаются на имена самих таблиц, при этом, в лучших традициях 16-битных систем, длина имени таблицы не должна превышать 8 символов (хотя это ограничение, в общем-то, можно игнорировать при работе в Delphi под 32-разрядными системами). Но куда более существенными недостатками являются отсутствие автоматического контроля целостности данных или связей, прав доступа, а так же ограничения на поддерживаемые типы данных, ключи, индексы и т.д. Все это делает данный формат недостаточно конкурентоспособным.

Другой формат, Paradox, появился позже и, пожалуй, является одним из наиболее развитых форматов, применяемых в локальных БД. Основными отличиями этого формата от dBase являются:

Благодаря таким достоинствам, формат Paradox используется гораздо чаще, по крайней мере, применительно к Delphi. Кроме того, большой набор типов данных позволяет эффективно подбирать нужный тип для хранения данных. Полный перечень поддерживаемых Paradox типов данных и их символьные обозначения в программе Database Desktop приведены в таблице 18.1.

Таблица 18.1. Типы данных в Paradox 7
ТипОбозначениеОписание
AlphaAСтрока длиной не более 255 символов (аналог ShortString)
NumberNЧисло с плавающей точкой (аналог Double)
Money$То же, что и Number, но при выводе сопровождается обозначением денежного знака
ShortSМалое целое (аналог SmallInt)
LongIntegerIЦелое (аналог LongInt)
BCD#Число в двоично-десятичном формате
DateDДата в диапазоне от 1 января 9999г. до н.э. до 31 декабря 9999г.
TimeTВремя
Timestamp@Дата и время
MemoMСтрока произвольной длины. Первые 240 символов хранятся в файле основной таблице, остальные – в файле с BLOB-данными
Formatted MemoFТо же, что и Memo но для RTF-текста
GraphicGГрафическое изображение в формате BMP, PCX, TIFF, GIF или EPS. При выводе преобразуется в BMP, хранится в файле с BLOB-данными
OLEOПроизвольные данные, которые поддерживаются через OLE. Хранятся в файле в BLOB-данными
LogicalLЛогическое значение (TRUE или FALSE)
Autoincrement+Автоинкрементное поле. При добавлении новой записи значение этого поля автоматически увеличивается на 1
BinaryBДвоичная информация (произвольная последовательность байтов). Подобно Memo, первые 240 байт хранятся в файле основной таблицы, остальные – в BLOB
BytesYДвоичная информация (произвольная последовательность байтов) длиной не более 255 символов

Что касается файлов, используемых для хранения информации, то в Paradox их может быть использовано достаточно большое количество:

Таким образом, количество файлов, ассоциированных с каждой таблицей, может достигать десятков, если использовать множество вторичных индексов. Пожалуй, это и есть единственный существенный недостаток формата Paradox. Но поскольку преимуществ у него гораздо больше, то в Delphi именно Paradox предлагается использовать по умолчанию, и потому этот формат называется не Paradox, а Standard.

Инструменты для работы с БД

Помимо поддержки БД в самой среде Delphi, в состав поставки Delphi входит ряд дополнительных инструментов, служащих для обеспечения работы с БД. Прежде всего, это BDE - Borland Database Engine, представляющий собой набор системных библиотек и драйверов, предназначенных для взаимодействия БД и приложений, разрабатываемых в Delphi.

Кроме того, имеется рад дополнительных приложений, вызвать которые можно самостоятельно (из программной группы Delphi), или из IDE:

В ранних версиях Delphi вместо dbExpress использовались SQL Links, но, начиная с Delphi 7, эта система считается устаревшей. Как и другие SQL-ориентированные компоненты, dbExpress и SQL Links имеются только в версиях Enterprise и Architect.

ПРИМЕЧАНИЕ
Очевидно, что многие инструменты, прежде всего, ориентированные на использование с промышленными БД, имеются в промышленных же (Enterprise) вариантах поставки Delphi стоимостью около 2-3 тыс. долл. Впрочем, рассмотрение подобных нюансов в этой книге мы опустим, тем более что для рассматриваемых примеров SQL-ориентированные СУБД нам не понадобятся.

Помимо перечисленных инструментов, в Delphi имеется множество компонент, имеющих самое непосредственное отношение к базам данных. Прежде всего, это группы Data Access, Data Controls и BDE. К этой же категории относятся группы ADO, InterBase, WebSnap и некоторые другие, однако все их рассматривать не представляется ни возможным, ни необходимым.

Таким образом, в состав Delphi входит все необходимое для того, чтобы создавать как локальные, так и промышленные - если рассматривать соответствующий вариант поставки Delphi - базы данных.

ВНИМАНИЕ
Следует учитывать, что используемые драйвера СУБД, равно как и BDE в обязательном порядке должны присутствовать на тех ПК, на которых будет выполняться разрабатываемое приложение БД.

Помимо средств, входящих в поставку Delphi необходимо упомянуть и о технологиях, имеющихся для этих целей в Windows. Так, механизм доступа к данным ADO, основанный на COM обеспечивает универсальный механизм доступа к данным из приложений. Использование ADO позволяет отказаться от установки BDE и поставки дополнительных библиотек на ПК конечного пользователя разрабатываемого приложения БД. Ряд компонент, в частности, компоненты из групп dbExpress и InterBase так же позволяют работать с БД в обход BDE. Однако отказ от BDE и использование специализированных компонентов автоматически увеличивает сложность разработки приложений баз данных, поскольку BDE по отношению к различным СУБД, как и VCL по отношению Windows API, сглаживает многие острые углы, проявляющиеся при работе с БД.

BDE и BDE Administrator

Несмотря на то, что в последнее время компания Borland усиленно продвигает SQL-ориентированный подход для разработки БД и агитирует за использование соответствующих компонентов (в частности, dbExpress), BDE остается популярным средством для разработки относительно несложных БД. Такому положению вещей способствует не только удобство и простота этой технологии, но и большое количество приложений, созданных с использованием BDE, поддержку и развитие которых требуется осуществлять и сегодня.

Для настойки параметров БД, поддерживаемых BDE, а так же для создания псевдонимов (Aliases) к базам данных, используют специальную утилиту, входящую в поставку Delphi - BDE Administrator. Рабочая область этой программы представляет собой блокнот из 2 страниц - Databases и Configuration (рис. 18.1).

Окно BDE Administrator с открытой страницей Databases
Рис. 18.1. Окно BDE Administrator с открытой страницей Databases

На странице Databases расположен список имеющихся псевдонимов к БД. Сразу после установки Delphi и BDE создается несколько псевдонимов, в частности, DBDEMOS, DefaultDD и IBLocal. А чтобы создать новый псевдоним, достаточно из меню Object выбрать пункт New. В результате откроется окно, в котором вы сможете выбрать тип СУБД. По умолчанию предлагается Standard, что обычно подразумевает использование Paradox в качестве драйвера для создаваемой БД. После этого в списке появится новый элемент, который будет назван Standard1, а справа, в области определения свойств (Definition), будут выведены все доступные для редактирования параметры. Применительно к стандартному для Delphi типу это будет собственно тип (Type), драйвер СУБД (Default driver), режим преобразования вещественных чисел (Enable BCD) и каталог, в котором расположены файлы БД (Path). Поскольку Delphi в качестве "своего" формата поддерживает не только Paradox, то в качестве драйвера можно указать так же форматы dBase, FoxPro и ASCII (текстовый формат).

После создания нового псевдонима можно изменить его название - проще всего это сделать сразу же после того, как он будет создан - пока курсор редактирования находится непосредственно на нем. Позже можно будет изменить его, выбрав пункт Rename из меню Object.

Допустим, что наш псевдоним будет называться DATA1, а в качестве пути укажем каталог Data на диске C. Таким образом, если нам в будущем понадобится обратиться к БД типа Paradox, расположенной в каталоге C:\Data, то нам будет достаточно указать лишь ее псевдоним, а остальную информацию BDE предоставит приложению автоматически.

Вторая страница BDE Administrator - Configuration предназначена для настроек как отдельных драйверов СУБД (группа Drivers), так и для общих для всех СУБД системных переменных (группа System). Драйвера, в свою очередь, подразделяются на поддерживаемые BDE напрямую (Native) и посредством ODBC (Open Database Connectivity - совместимость открытых баз данных).

Среди настроек, в первую очередь следует выделить опцию Langdriver, имеющуюся как у системных настроек (группа INIT, см. рис. 18.2), так и для каждой СУБД в отдельности. Для корректной работы с кириллицей следует установить значение "Pdox ANSI Cyrillic", соответствующее кодировке Windows-1251, как в общих настройках (INIT), так и для используемого драйвера СУБД (например, Paradox).

Системные настройки в BDE Administrator
Рис. 18.2. Системные настройки в BDE Administrator

После произведения всех необходимых настроек следует перезапустить приложения, использующие BDE для того, чтобы новые параметры вступили в силу. Что касается созданных псевдонимов, то они становятся доступными сразу же после создания (вернее, сразу после того, как вы сохраните конфигурацию, нажав на кнопку Apply или выбрав соответствующий пункт из меню Object).

Создание таблиц в Database Desktop

Для работы с таблицами при создании приложения БД можно использовать приложение Database Desktop, входящее в поставку Delphi. С помощью Database Desktop можно создавать и реструктуризировать таблицы, вносить в них новые записи, а так же создавать запросы.

Для создания новой таблицы следует выбрать пункт меню File > New > Table. При этом будет предложено выбрать тип создаваемой страницы, по умолчанию предлагается формат Paradox 7, и именно его мы и будем использовать. Сразу после подтверждения выбранного типа откроется окно определения структуры таблицы (рис. 18.3), в котором и производятся все необходимые действия, связанные с созданием и определением параметров таблицы, включая ее поля, индексы, пароли, условия и ограничения на значения и для ссылочной целостности.

Окно определения структуры таблицы
Рис. 18.3. Окно определения структуры таблицы

Как нам уже известно, программа-минимум для создания таблицы реляционной СУБД заключается в создании одного поля. Имя поля указывают в столбце Field Name, а его параметры - в Type (тип) и Size (размер). Возможные типы данных для таблиц Paradox были приведены в таблице 18.1, что касается размеров, то они актуальны, в основном, только для типов Alpha и Bytes. Для BLOB-типов данных размеры так же можно указывать, но для них этот размер будет определять не ограничение размера самих данных, а то, сколько байт должно храниться в основном файле таблицы. Наконец, в графе Key можно отметить поле или поля, являющиеся ключевыми, по которым будет создан первичный индекс. Кроме того, можно сделать целый ряд дополнительных операций, в том числе и над таблицей в целом, для чего в расположенном справа ниспадающем списке можно выбрать один из следующих пунктов:

Наиболее часто возникает необходимость именно в задании индексов. В принципе, для таблиц Paradox иногда достаточно указать лишь первичный индекс, отметив нужное поле (или поля) в графе Key. Но если возникнет необходимость определить дополнительные индексы, или если за основу был взять другой формат, скажем, dBase, ключевого индекса в котором не предусмотрено, то следует выбрать из списка пункт Secondary Indexes, после чего нажать на кнопку Define. В открывшемся окне определения вторичных индексов (Define Secondary Index) из списка имеющихся в таблице полей, который отображен справа, выбирается поле или поля, по которым должен быть создан новый индекс. Внизу окна расположена группа из 4 опций, позволяющих определить тип создаваемого индекса. В частности, опция Unique указывает на то, что индекс требует уникальные значения для составляющих его полей, опция Maintained определяет, должен ли индекс обновляться при каждом изменении в таблице, а опция Case Sensitive отвечает за распознавание регистра символов в текстовых строках. Ну и оставшаяся опция - Descending - указывает на то, что сортировка индекса должна производиться не по возрастанию, как это принято по умолчанию, а по убыванию.

После того, как поля и опции будут выбраны, надо будет нажать на кнопку ОК, после чего программа попросит вас ввести имя индекса. Указав имя и вновь нажав ОК, вы увидите новый индекс в списке. Если понадобится изменить ранее определенный индекс, то достаточно будет выбрать его в списке и нажать на кнопку Modify. Если же какой-либо индекс окажется ненужным, то его можно удалить, нажав на Erase.

Для примера создадим простую таблицу клиентов. Она будет состоять всего из 2 полей - номера (назовем это поле CUST_ID) и имени (CUST_NAME). Для первого поля установим автоинкрементный тип (+) и сделаем его ключевым, поставив двойным щелчком мышки звездочку в графе Key. Второе поле должно быть текстовым (A), а его размер можно ограничить 40 символами, для чего в графе Size введем число 40.

Итак, когда все поля таблицы будут определены, индексы заданы, и все остальные шаги по определению структуры таблицы так же выполнены, останется лишь сохранить новую таблицу, для чего следует нажать на кнопку Save As. В диалоговом окне сохранения таблицы обратите внимание на список Alias, при помощи которого возможна быстрая навигация между имеющимися БД. Применительно к только что созданной таблице в списке псевдонимов выберем DATA1, а в качестве имени файла (оно же будет именем таблицы) используем слово customer.

СОВЕТ
Если вы создаете БД, состоящую из множества однотипных таблиц, то полезно знать, что, нажав на кнопку Borrow и указав таблицу-прототип, можно импортировать ее структуру во вновь создаваемую таблицу, после чего останется лишь внести необходимые корректировки - и новая таблица готова.

После создания и сохранения таблицы ее можно открыть для внесения записей, а так же для изменения структуры. Для этого следует воспользоваться меню File ' Open ' Table и выбрать таблицу в окне открытия файла. Опять-таки, как и при сохранении, здесь будет список псевдонимов, при помощи которого можно быстро выбрать каталог с нужной БД.

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

ПРИМЕЧАНИЕ
Довольно часто, особенно при работе в среде Windows 2000/XP, программа Database Desktop не отображает символы кириллицы. Для исправления этого досадного обстоятельства запустите файл cyr_fix, находящийся в каталоге Tools\DBD_Patch.

Чтобы изменять данные в таблице или вносить в нее новые записи, следует переключиться в режим редактирования, для чего можно нажать на кнопку-триггер Edit Data на панели инструментов, или выбрать одноименный пункт из меню Table. Если открыто несколько таблиц одновременно, то режим правки будет включен только для той таблицы, что была на переднем плане в момент включения этого режима. Вернуться к режиму просмотра (чтобы ненароком не повредить имеющиеся данные) можно, отжав триггер (или выбрав Table ' View Data).

Откроем только что созданную таблицу Customer и заполним ее данными, для чего достаточно будет вводить данные лишь в столбец поля CUST_NAME, поскольку автоинкрементное поле CUST_ID будет заполняться автоматически. Важно отметить, что правка таблицы, как в Database Desktop, так и любым другим способом, приводит к немедленному изменению ее действительного содержания. Из этого следует, что, во-первых, операция сохранения, привычная по электронным таблицам, здесь не уместна (все сохраняется сразу после вода), а во-вторых, надо быть аккуратным, так как отменить правку не получится.

Кроме правки содержащихся в таблице данных, при помощи Database Desktop можно посмотреть структуру таблицы, а также изменить ее. Для этого в меню Table имеются пункты Info Structure (просмотр структуры) и Restructure (изменение структуры). И в том и в другом случае будет открыто уже знакомое нам окно определения структуры таблицы, с той лишь разницей, что для просмотра оно будет открыто в режиме "только для чтения".

Внося изменения в структуру таблицы, уже содержащую какие-либо данные, следует помнить, что это может привести к потере части информации. Например, если изначально для какого-либо текстового поля был задан размер 100 символов, то уменьшение его размера до 60 символов приведет к тому, что информация будет "обрезана" по 60 символу, а последние 40 окажутся безвозвратно утерянными. Точно так же часть информации может быть утеряна, например, при изменении поля вещественного типа на целое, длинного целого на короткое и т.д. Правда, если подобная операция производится в Database Desktop, то при этом вам будет выдано соответствующее предупреждение. Кроме того следует учитывать, что в момент изменения структуры, никакое другое приложение не должно использовать данную таблицу.

Наконец, рассмотрим еще один вариант правки - изменение имени самой таблицы. Несмотря на то, что эту операцию, казалось бы, можно выполнить из файловой системы, переименовав файлы, используя проводник Windows, такой шаг приведет к потере связанной информации, поскольку имя таблицы хранится во всех связанных с ней файлах (фалы индексов, BLOB-данных и т.д.). Поэтому для переименования таблицы следует открыть ее для реструктуризации в Database Desktop и нажать на кнопку Save As, после чего выбрать новое имя. В результате будут корректно сохранены как основной файл данных таблицы, так и вся связанные с ним файлы индексов, метаданных и т.д. Исходные файлы при этом так же останутся на диске - вот их и можно будет удалить средствами файловой системы.

Поддержка BDE в VCL

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

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

Таблица 18.2. Свойства компонента Database
СвойствоТипОписание
AliasNameStringОпределяет псевдоним BDE для подключения
ConnectedBooleanОпределяет, установлено или нет соединение с БД
DatabaseNameStringОпределяет имя БД, ассоциированное с данным компонентом
DirectoryStringОпределяет рабочий каталог для БД Paradox или dBase
DriverNameStringОпределяет имя драйвера BDE для данной БД
ExclusiveBooleanВключает монопольный доступ к БД
InTransactionBooleanУказывает, выполняется ли в данный момент транзакция
KeepConnectionBooleanОпределяет, должно ли приложение оставаться подключенным к БД, когда активных соединений нет
ParamsTStringsОпределяет список дополнительных параметров для псевдонима BDE
SessionNameStringОпределяет имя сессии для данного компонента
ReadOnlyBooleanВключает режим доступа к данным только на чтение

Пожалуй, наиболее важным свойством является 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
СвойствоТипОписание
ActiveBooleanОпределяет, должно ли быть установлено подключение к базе данных
CanModifyBooleanУказывает, может ли приложение изменять содержимое таблицы Paradox или dBase
DatabaseNameStringОпределяет имя БД, ассоциированное с данным компонентом
DataSourceTDataSourceОпределяет имя объекта источника данных для использования данной таблицы в качестве подчиненной при связи типа главный-подчиненный
DefaultIndexBooleanОпределяет, должно ли производиться упорядочивание записей таблицы по первичному индексу
ExclusiveBooleanВключает монопольный доступ к данной таблице Paradox или dBase
ExistsBooleanУказывает, существует ли данная таблица в БД
FieldDefsTFieldDefsУказывает на список полей, определяющих данные
FilterStringОпределяет условие, по которому будет происходить выборка полей для показа
FilteredBooleanОпределяет, является ли фильтр включенным
FilterOptionsTFilterOptionsОпределяет набор флагов для фильтра
IndexDefsTIndexDefsПредоставляет информацию о индексах таблицы
IndexFieldCountIntegerУказывает на количество полей, использованных в текущем индексе
IndexFieldNamesStringОпределяет список полей, используемых в качестве индекса (через запятую)
IndexFieldsarray of TfieldСписок индексов таблицы
IndexFilesTStrungsОпределяет список файлов с индексами для таблиц dBase
IndexNameStringОпределяет вторичный индекс, по которому должно производиться упорядочивание (вместо первичного)
MasterFieldsStringОпределяет список полей (через запятую) в главной таблице, по которым должна устанавливаться связь типа главный-подчиненный
MasterSourceTDataSourceОпределяет имя объекта источника данных для использования данной таблицы в качестве главной при связи типа главный-подчиненный
SessionNameStringОпределяет имя сессии для данного компонента
ReadOnlyBooleanОпределяет режим доступа к таблице
TableNameStringОпределяет имя таблицы (имя файла для таблиц dBase или Paradox)
TableTypeTTableTypeОпределяет тип таблицы. Может принимать значения ttDefault (тип определяется по расширению файла), ttParadox, ttDBase, ttFoxPro и ttASCII

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

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

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

Альтернативы BDE

Как уже было сказано, Borland не считает BDE вполне современным и прогрессивным механизмом работы с БД. В качестве непосредственной замены BDE предлагается dbExpress - совокупность драйверов и компонентов, работающих с соединениями, транзакциями и запросами. С СУБД dbExpress общается посредством драйверов, которые для получения данных используют SQL. При этом на стороне клиентского приложения данные не кэшируются, что означает использование однонаправленных курсоров и невозможность непосредственной правки таблиц. Впрочем, технология dbExpress в любом случае не предназначена для работы с локальными БД. Среди поддерживаемых dbExpress СУБД можно отметить DB2, Oracle, MS SQL и MySQL. Разумеется, имеется поддержка и фирменной СУБД Interbase.

Впрочем, использование dbExpress для Interbase - не самое лучшее решение: дело в том, что в Delphi имеется еще одна технология, вернее - набор компонент, реализующих непосредственное взаимодействие с СУБД Interbase - IB Express. На палитре компонентов они находятся на закладке InterBase. Эти компоненты реализуют все возможности, имеющиеся у BDE, а так же позволяют использовать специфические для СУБД Interbase возможности, как-то хранимые процедуры и т.д. Кроме того, имеется набор компонентов InterBase Admin, при помощи которых можно производить манипуляции над самой СУБД Interbase.

Наконец, в Delphi предусмотрен еще одни основной механизм доступа к данным, а именно - ADO, компоненты которого расположены на одноименной закладке палитры компонентов. В общем и целом ADO можно рассматривать как вариант BDE в исполнении Microsoft. Правда, ADO общается с БД через интерфейс COM, что, возможно, не так оптимально, как работа напрямую из BDE (для случая с поддерживаемыми BDE СУБД), но при этом в качестве преимущества мы имеем то, что COM уже присутствует на любом Windows-ПК, в то время как BDE необходимо устанавливать отдельно. Собственно говоря, это и есть преимущество ADO над BDE, подобно всем остальным случаям с приложениями Microsoft, входящим в состав в Windows.

В любом случае, охватить все возможные пути работы с базами данных, предусмотренные в Delphi, в рамках настоящего издания не представляется возможным, особенно если учитывать тот факт, что помимо названных технологий, входящих в состав Delphi, имеются еще и альтернативные разработки. Поэтому в дальнейшем мы сосредоточим свое внимание на BDE, как на наиболее универсальном и широко распространенном варианте. Вместе с тем, мы рассмотрим в общих чертах работу с БД при помощи запросов на SQL, поскольку подобный подход приемлем для любых ныне встречающихся технологий доступа к данным, включая BDE, dbExpress, IB Express и ADO.

Избранное

SNK GSCP
SNK GSCP - новая библиотека для PHP 5!
Web Studio
Web Studio и Visual Workshop
Библиотека:
Стандарты на web-технологии
Монополия
Монополия v. 2.0.2
Загрузки:
скачать программы
Продукция:
программы и книги
Техподдержка / Связаться с нами
Copyright © 1999-2013 SNK. Все права защищены.
При использовании материалов с сайта ссылка на источник обязательна.
Рейтинг@Mail.ru