Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1103588.rtf
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
10.86 Mб
Скачать

2. Навигационный способ доступа к базам данных

Достоинство навигационного способа доступа к базе данных — простота кодирования операций с набором данных. Его основной недостаток состоит в том, что если требуется обработать только одну запись, все равно приложение получает все записи набора данных. Это приводит к большой нагрузке на сеть, особенно при интенсивном обмене данными. Поэтому применение навигационного способа доступа обычно ограничивается локальными БД.

В этом разделе рассматриваются основные операции, применяемые в локальных БД, которые также можно использовать в небольших сетях для организации работы с удаленными БД. Для операций с таблицами используются наборы данных Table и Query. С помощью структурированного языка запросов (SQL) и набора данных Query можно реализовать реляционный доступ к БД (см. раздел «Реляционный способ доступа к базе данных»).

При отсутствии каких-либо ограничений для работы с локальными БД лучше использовать набор данных Table, т. к. операции с его записями выполняются несколько быстрее, чем для записей набора данных Query, а для доступа к удаленным БД — набор данных Query, поскольку он позволяет реализовать реляционный доступ к данным, уменьшающий число передаваемых по сети записей.

При навигационном способе доступа операции выполняются с отдельными записями. Каждый набор данных имеет невидимый указатель текущей записи. Этот указатель определяет запись, поля которой можно редактировать и удалять. Компоненты Table и Query позволяют управлять положением указателя текущей записи.

При использовании навигационного способа доступа к набору данных возможны следующие операции:

-Сортировка записей

-Перемещение по набору данных

-Редактирование записей

-Вставка и удаление записей

-Фильтрация записей

Отметим, что аналогичные операции применимы к набору данных и при реляционном доступе к БД, реализуемом с помощью SQL-запроса.

2.1 Операции с таблицей бд

Кроме действий с отдельными записями, с помощью компонента Table можно выполнять также действия с таблицей БД, например, создавать, удалять или переименовывать таблицы, устанавливать режимы доступа к ним.

Создание, удаление и переименование. Обычно таблицы создаются на этапе разработки приложения с помощью соответствующих программ (например, Database Desktop). Удаление таблицы также выполняется при разработке приложения, например, с помощью проводника Windows. Используя инструментальные средства, можно создавать и удалять таблицы, а также изменять их структуру. Программист может создать или удалить таблицу динамически в процессе выполнения приложения, например, при создании резервной или архивной копии всей таблицы пли ее части.

Для создания таблицы используется метод CreateTable. В результате на диске появится пустая таблица. Перед вызовом метода нужно подготовить необходимые данные, на основании которых выполняется создание таблицы. Эти данные следует присвоить в качестве значений соответствующим свойствам набора данных. Перед вызовом метода CreateTable набор данных должен быть закрыт и установлены значения следующих свойств:

-DatabaseName — расположение БД (псевдоним)

-TableName — название таблицы

-TableType — тип таблицы

-FieldDefs — описание полей

-IndexDefs — описание индексов

TableName задает имя файла таблицы, который будет находиться в каталоге, указанном для размещения БД (свойство DatabaseName).

Формат таблицы TableName типа TTableName может быть следующим:

-ttDefault — формат таблицы (по умолчанию) определяется на основании следующих расширений имен файлов таблиц:

-DB — Paradox

-DBF — dBase

-ТХТ — ASCII

-ttParadox — Paradox

-ttDBase — dBASE

-ttFoxPro — FoxPro

-ttASCII — ASCII (файл, содержащий текст, который разбит на колонки)

Для новой таблицы в свойстве FieldDefs типа TFieldDefs обязательно должно быть определено хотя бы одно поле. Перед описанием полей таблицы значение этого свойства следует очистить (удалить предыдущее значение), т. к. в нем может находиться информация о полях предыдущей таблицы, с которой был связан набор данных. Для очистки значения свойства можно применить метод Clear, для занесения информации о полях новой таблицы — метод Add.

Процедура Add (const Name: String; DateType: TFieldType; Size: Word; Required: Boolean) добавляет к массиву полей описание нового поля. Параметр Name указывает название нового поля, а DateType — тип поля, который можно выбирать из следующего списка: ftUnknown, ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat… В перечисленных значениях префикс ft указывает. что значение относится к типу поля (Field Type), а последующая часть значения определяет сам тип.

Параметр Size определяет размер поля. Если для полей некоторых типов, например, поля даты (ftDate), размер не задается, то параметр Size принимает нулевое значение. Логический параметр Required определяет, должно ли поле содержать значение (True) или может быть пустым (False).

В таблице можно определить индексы, описание которых заносится в свойство IndexDefs типа TIndexDefs. После предварительной очистки значения этого свойства методом Clear данные об индексах заносятся методом Add. После создания таблицы для нее можно создать индекс или удалить его с помощью методов AddIndex и DeleteIndex.

Для удаления таблицы используется метод DeleteTable, в результате выполнения которого происходит физическое удаление всех файлов указанной таблицы БД. Путь и имя удаляемой таблицы определяют свойства DatabaseName и TableName набора данных. Перед удалением таблицы набор данных должен быть закрыт.

Для переименования таблиц dBase и Paradox можно использовать метод RenameTable (const NewTableName: String), при выполнении которого переименовываются все файлы, относящиеся к таблице. Параметр NewTableName задает новое название таблицы. Напомним, что имя таблицы совпадает с названиями файлов, за исключением расширения имени файла, которое отражает содержимое файла (например, файл содержит данные или индексы).

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

Метод LockTable (LockTepy: TLockТуре) устанавливает блокировку для таблицы, параметр LоскТуре задает тип блокировки:

-ltReadLock — запрещены запись в таблицу и чтение ее; этот режим является своего рода режимом монопольного доступа

-ltWriteLock — запрещена запись в таблицу; другие приложения не могут выполнять модификацию таблицы, но чтение данных разрешено

Метод UpLockTable (LockType: TLockТуре) снимает установленную ранее блокировку.