Конспект лекций н. Новгород 2002 Министерство транспорта Российской федерации Государственное образовательное учреждение высшего профессионального образования icon

Конспект лекций н. Новгород 2002 Министерство транспорта Российской федерации Государственное образовательное учреждение высшего профессионального образования



Смотрите также:
Программа по дисциплине...
Программа по дисциплине...
Программа по дисциплине...
Программа по дисциплине...
Программа по дисциплине...
Программа по дисциплине...
Программа по дисциплине...
Программа по дисциплине...
Федеральное агентство морского и речного транспорта РФ федеральное государственное...
Федеральное агентство морского и речного транспорта РФ федеральное государственное...
Основная образовательная программа высшего профессионального образования Направление подготовки...
Рабочей программы учебной исциплины...



страницы: 1   2   3   4   5   6   7
вернуться в начало
скачать
^

Многопользовательская работа в локальной сети в среде VISUAL FOXPRO


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

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

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

    1. ALTER TABLE – блокирует всю таблицу.

    2. APPEND – блокирует всю таблицу.

    3. APPEND BLANK – блокирует заголовок таблицы.

    4. APPEND FROM – блокирует всю таблицу.

    5. APPEND FROM ARRAY – блокирует заголовок таблицы.

    6. APPEND MEMO – блокирует текущую запись.

    7. BLANK – блокирует текущую запись.

    8. BROWSE – блокирует текущую запись и соответствующие записи в связанных таблицах.

    9. CHANGE - блокирует текущую запись и соответствующие записи в связанных таблицах.

    10. DELETE - блокирует текущую запись.

    11. DELETE NEXT 1 -- блокирует текущую запись.

    12. DELETE -- если больше единицы, блокируется вся таблица.

    13. ^ DELETE RECORD -- блокирует записей

    14. DELETE SQL -- блокирует текущую запись.

    15. EDIT - блокирует текущую запись и соответствующие записи в связанных таблицах.

    16. GATHER -- блокирует текущую запись.

    17. INSERT – блокирует всю таблицу.

    18. INSERT SQL – блокирует заголовок таблицы.

    19. MODIFY MEMO – с началом редактирования записи блокирует её.

    20. READ -- блокирует текущую запись.

    21. RECALL -- блокирует текущую запись.

    22. RECALL NEXT 1 -- блокирует указанную запись.

    23. ^ RECALL RECORD -- блокирует записей.

    24. RECALL -- если больше единицы, блокируется вся таблица.

    25. REPLACE -- блокирует текущую запись.

    26. REPLACE NEXT 1 -- блокирует указанную запись.

    27. ^ REPLACE RECORD -- блокирует записей.

    28. SHOW GETS -- блокирует текущую запись.

    29. TABLEUPDATE()– блокирует всю таблицу.

    30. UPDATE – блокирует всю таблицу.

    31. UPDATE SQL – блокирует всю таблицу.

Все эти команды с автоматической блокировкой снимают её после выполнения.

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

^ SET EXCLUSIVE ON

Для снятия режима блокировки – команда

SET EXCLUSIVE OFF

При этом полная блокировка открытых таблиц будет снята только после их закрытия.

Для блокировки отдельной таблицы может использоваться опция EXCLUSIVE в команде открытия таблицы USE. Ниже приведены два примера полной блокировки таблиц. Первый – двумя командами:

^ SET EXCLUSIVE ON

USE КЛИЕНТЫ

Второй – одной командой:

USE КЛИЕНТЫ EXCLUSIVE

Вот команды, которые могут использоваться только в режиме полной блокировки: ALTER TABLE; INDEX; INSERT (BLANK); MODIFY STRUCTURE; PACK; REINDEX; ZAP.
^

Блокировка таблиц


Для блокировки изменений таблиц используется функция

FLOCK([псевдоним _таблицы])

Сначала она проверяет текущий статус и, если таблица не заблокирована, блокирует её, возвращая значение .t. (Истина). В противном случае возвращается значение .f. (Ложь). Для блокировки в текущей области псевдоним не указывают. Пример:

^ SET EXCLUSIVE OFF

SET REPROCESS TO 0

USE КЛИЕНТЫ

IF FLOCK()

REPLACE ALL НАЗВАНИЕ WITH UPPER(НАЗВАНИЕ)

UNLOCK

ELSE

WAIT “ФАЙЛ ЗАНЯТ, ЖДИТЕ…” WINDOW NOWAIT

ENDIF

Если редактируются таблицы, связанные командой SET RELATION, то необходимо блокировать каждую связанную таблицу отдельно.
^

Блокировка записей


Для блокировки записей используются взаимозаменяемые функции LOCK и RLOCK:

RLOCK([рабочаяОбласть | псевдонимТаблицы] | [номераЗаписей, рабочаяОбласть | псевдонимТаблицы] )

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

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

^ SET MULTILOCKS ON

Затем аргументом “номераЗаписей” функции RLOCK указываются номера в кавычках, разделённые запятыми (“3”,”5” и т.д.).

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

Для установки режима повторных попыток блокировки данных (в случае неуспеха) применяется команда

SET REPROCESS TO числоПопыток [SECONDS] | TO AUTOMATIC

Если есть опция SECONDS, то числоПопыток задает время в секундах, иначе - количество попыток. Если числоПопыток=0 или есть опция TO AUTOMATIC, количество попыток становится неограниченным. Прервать такой процесс можно нажатием клавиши «Escape».
^

Снятие блокировок


Для снятия блокировок используются следующие команды:

    1. CLOSE – все блокировки с записей и таблиц.

    2. CLOSE ALL – все блокировки с записей и таблиц.

    3. END TRANSATION – все автоматические блокировки с записей и таблиц.

    4. QUIT – все блокировки с записей и таблиц.

    5. UNLOCK – все блокировки с записей и таблиц в текущей рабочей области.

    6. UNLOCK ALL – все блокировки с записей и таблиц во всех рабочих областях

    7. USE – все блокировки с записей и таблиц.

    8. SET MULTILOCKS OFF – автоматическое снятие текущей блокировки при создании новой.

    9. FLOCK() – перед блокировкой файла снимает все блокировки его записей.

    10. TABLEUPDATE() – перед обновлением таблицы снимает все блокировки.

Наиболее часто применяется команда UNLOCK:

UNLOCK [RECORD номерЗаписи] [ IN <псевдоним Таблицы> ] [ALL]

Эта же команда без параметров снимает блокировку с текущей записи или таблицы(если нет опции RECORD). ALL – разблокирование всех открытых таблиц.
^

Сеансы работы с данными


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

Для управления сеансом предназначено свойство DataSession формы, которое устанавливают равным 1 или 2. Если DataSession=1, то любые изменения в одном экземпляре формы будут отображаться во всех остальных. Это обычный режим работы. Значение 2 создает копию среды окружения. При этом изменения в одном экземпляре формы не отражаются в других открытых формах.

Для выбора сеанса работы выполняются следующие действия:

  • Открыть окно Data Session;

  • Из раскрывающегося списка Current Session выбрать требуемый сеанс работы;

Вместо этого можно в командном окне набрать команду

SET DATASESSION TO номерСеанса.
^

Использование буферов для блокировки


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

Для установки типа буфферизации применяют функцию CURSORSETPROP(), свойство BufferMode соответствующей формы и свойство BufferModeOverride курсора, используемого в среде окружения формы.

Свойство BufferMode может принимать одно из значений:

  • 0 – записи блокируются с момента начала редактирования, и значения полей записываются в базу при переходе к следующей записи;

  • 1 – пессимистическая блокировка записей (блокирует запись после начала редактирования и освобождает её только после перехода на следующую, или при вызове функции TABLEUPDATE());

  • 2 – оптимистическая блокировка записей (позволяет редактировать текущую запись в других сеансах работы и блокирует её только при переходе на следующую запись, или при выполнении функции TABLEUPDATE());

Для определения свойства BufferModeOverride необходимо выполнить команду меню VIEW, Data Environment. Затем выбрать нужную таблицу, щелкнуть её правой кнопокой мыши и из контекстного меню выбрать команду Properties. Наконец, в окне свойств установить одно из возможных значений:

  • 0 – буферы не используются;

  • 1 – используется тип блокировки, заданный свойство BufferMode соответствующей формы;

  • 2 -- пессимистическая блокировка записей;

  • 3 -- оптимистическая блокировка записей;

  • 4 -- пессимистическая блокировка таблицы (все записи, обновление только после вызова TABLEUPDATE());

  • 5 -- оптимистическая блокировка таблицы (можно редактировать записи в других сеансах работы, блокирует записи при обновлении данных с помощью TABLEUPDATE());

Функция CURSORSETPROP() имеет следующий синтаксис:

CURSORSETPROP(Buffering, типБуферизации, псевдонимТаблицы | номерРабочейОбласти)

Для работы в интерактивном режиме тип блокировки устанавливается в окне Data Session командой Properties. В окне Work Area Properties выбираются варианты для областей Lock records и Buffer.




оставить комментарий
страница3/7
Дата02.10.2011
Размер1,32 Mb.
ТипКонспект, Образовательные материалы
Добавить документ в свой блог или на сайт

страницы: 1   2   3   4   5   6   7
Ваша оценка этого документа будет первой.
Ваша оценка:
Разместите кнопку на своём сайте или блоге:
rudocs.exdat.com

Загрузка...
База данных защищена авторским правом ©exdat 2000-2017
При копировании материала укажите ссылку
обратиться к администрации
Анализ
Справочники
Сценарии
Рефераты
Курсовые работы
Авторефераты
Программы
Методички
Документы
Понятия

опубликовать
Документы

наверх