Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_k_gosam (1).doc
Скачиваний:
1
Добавлен:
09.01.2020
Размер:
4.61 Mб
Скачать
  1. Виды команд сетевых субд. Виды блокировки файлов и записей. Обработка ошибок сетевыми приложениями. Тестирование сетевого приложения.

Для «ручной» блокировки изменений объекта используются функции FLOCK(), RLOCK(), LOCK(). Функция FLOCK() устанавливает блокировку изменений таблицы целиком, а функции RLOCK() и LOCK() идентичны по своему действию и устанавливают блокировку изменений одной, либо нескольких, записей таблицы. При вызове функции «ручной» блокировки выполняется следующая последовательность действий:

тестируется состояние блокировки требуемого объекта;

если требуемый объект занят монопольно, либо заблокирован другим пользователем, то текущую блокировку установить невозможно, и функция возвращает логическое значение «ложь» (.F.);

если требуемый объект свободен от состояния блокирования, то функция устанавливает на него состояние блокировки изменений и возвращает логическое значение «истина» (.T.).

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

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

SET MULTILOCKS ON

Если в списке блокируемых записей содержатся номера более чем одной записи, то VFP пытается блокировать сразу все записи, и, если это удается, то попытка блокировки считается успешной. В противном случае, если хотя бы одну запись из списка невозможно заблокировать, то вся блокировка считается безуспешной, ни одна из записей списка не блокируется, а все ранее сделанные этим пользователем блокировки сохраняются.

Выполняя блокировку по одной записи, можно последовательно заблокировать весь файл таблицы, но предпочтительней это делать функцией flock(), которая выполняется быстрее.

Команды, снимающие блокировку с записей и таблиц, приведены в следующей таблице:

Команда

Действие

CLOSE

Снимает все блокировки записей и таблиц

CLOSE ALL

Снимает все блокировки записей и таблиц

END TRANSACTION

Снимает все автоматически установленные блокировки

QUIT

Снимает все блокировки записей и таблиц

UNLOCK

Снимает все блокировки записей и таблицы в текущей рабочей области

UNLOCK ALL

Снимает все блокировки записей и таблиц во всех рабочих областях

USE

Снимает все блокировки записей и таблицы

SET MULTILOCKS OFF

Позволяет автоматическое снятие текущей блокировки при создании новой

FLOCK()

Перед блокировкой файла снимает все блокировки находящихся в нем записей

TABLEUPDATE()

Прежде чем обновить таблицу, снимает все блокировки

В сетевом приложении имеется возможность перехвата ошибок приложения и манипуляции с ними. Более подробно об этом следует читать в специализированных справочниках по соответствующему языку программирования.

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