Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Электронный конспект ОВГЕРМАН 1ый семестр.doc
Скачиваний:
79
Добавлен:
15.06.2014
Размер:
11.83 Mб
Скачать
      1. Сквозные sql-запросы

Начнем с примера.

CLOSE ALL

Open DataBase data1

CREATE CURSOR myCurr (Name c(40), Group integer)

b1= SQLCONNECT(“Connect1”)

if b1>0

messagebox(“OK”)

s=”SELECT * from db1!Students”

=SQLSetProp (b1,”asynchronous”,.F.)

i=SQLPREPARE(b1,”SELECT * FROM db1!Students”,”myCurr”)

y=SQLEXEC(b1,s,”myCurr”)

thisform.text1.value=myCurr.Name

SQLDISCONNECT(b1)

else

messagebox(“No connection established”)

endif

closeall

В этом примере сквозные SQL-запросы выделены жирным шрифтом. Приведенный пример достаточно типичен и его можно использовать как шаблон. Прежде всего, объявляем курсор:

CREATE CURSOR myCurr (Name c(40), Group integer)

Имя курсора – myCurr. Он состоит из двух полей: Name и Group. Названия и типы этих полей должны соответствовать полям таблицы Students, из которой выполняется далее чтение записей в курсор. Далее следует команда для открытия соединения с именем Connect1. Эта команда относится к группе сквозных SQL-запросов:

b1=SQLCONNECT(“Connect1”)

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

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

0000000

messagebox(“OK”)

s=”SELECT * from db1!Students”

=SQLSetProp (b1,”asynchronous”,.F.)

i=SQLPREPARE(b1,”SELECT * FROM db1!Students”,”myCurr”)

y=SQLEXEC(b1,s,”myCurr”)

thisform.text1.value=myCurr.Name

SQLDISCONNECT(b1)

Команда

SQLSetProp(b1,”asynchronous”,.F.)

Устанавливает свойство соединения, соответствующего логическому каналу b1. В данном случае устанавливается значение свойства asynchronousравным .F. Это свойство определяет, будет ли выполняться программа до того, как соединение физически устанавливается, либо выполнение программы приостанавливается. Значениеasynchronous= .F. указывает на то, что выполнение программы будет приостановлено. Команда позволяет задавать значения и другим свойствам соединения. Интересными свойствами являются следующие:

ConnectName- имя соединения. Доступно только для чтения.

ConnectBusy– содержит .T., если разделяемое соединение занято.

DispLogin– значение, определяющее подключение диалогового окна при установлении соединения с источником ODBC:

=1, если не все поля диалогового окна для регистрации заполнены;

=2 - в этом случае диалоговое окно для регистрации вызывается всегда.

=3 – окно не отображается, но при отсутствии необходимых данных возникает ошибка.

WaitTime- время (в миллисекундах), по истечении которого выполняется проверка успешности соединения.(d vbkbctreylf[) необходимых данных возникает ошибка.\00000000000000000000000000000000000000000000000000000000

PacketSize– размер пакета данных, передаваемого по сети. По умолчанию равен 4Кб.

BatchMode– определяет, каким образов выполняется возврат результирующего набора: пакетами или целиком.

=1, если результат выборки передается пакетами.

=2, если результат выборки передается целиком. сти соединения.0000000000000000000000000000000000000000000000000000000000000е все поля диалогового окна для регистрации заполнены;

нения с источником ODBC;

тся следующие:

я, либо выполнение прог

Наряду с командой SqlSetProp,применяемой для установки значений свойств соединений, используется командаSqlGetProp, которая позволяет получить значение свойства. Команда имеет следующий формат

SQLGetProp(номер_канала, имя свойства).

Команда

i=SQLPREPARE(b1,”SELECT*FROMdb1!Students”,”myCurr”)

осуществляет подготовку выполнения последующего запроса. Подготовка сводится к компиляции запроса. После компиции можно многократно выполнять запросы по команде SQLEXEC. SQL-запрос.компиляции запроса.дующего запроса. ний, используется команда SqlGetProp, которая позволяет получить значе

орки передается целиком.0000000000000000000000000000000000000000000000000000000000000000000000000000000000

Команда

y=SQLEXEC(b1,s,”myCurr”)

выполняет SQL-запрос. Результирующий набор помещается в курсоре с именем myCurr. Если при выполнении запроса произошла ошибка, то переменная y принимает следующие возможные значения:

y=0 – запрос не выполнен, но выполняется или висит;

y=-1 – ошибка имеет место не в запросе, а в соединении;

y=-2 – ошибка в запросе.

При успешном завершении y=1.

Далее команда

thisform.text1.value=myCurr.Name

устанавливает в текстовом поле text1 на форме значение поляNameпервой записи результирующего запроса. Поскольку курсор – это обычная таблица, хотя и временная, то для навигации по ней следует использовать команды FoxPro.

Наконец, команда

SQLDISCONNECT(b1)

разрывает соединение.

Установить соединение можно с помощью команды

SQLSTRINGCONNECT(строка_соединения). Эта команда играет роль, аналогичную команде

b1=SQLCONNECT(“Connect1”)

однако не использует заранее построенное соединение. Вместо этого, строка соединения содержит информацию для создания соединения. Например,

SQLStringConnect(“dsn=mycon;uid=sa;pwd=FoxPro”)

Здесь dsn задает имя ODBC-соединения, построенного с помощью панели ODBC-адиминистрирования. uid- определяет идентификатор пользователя (sa- системный администратор). Для соединения с FoxPro или ACCESS uid можно не вводить. Наконец, pwd задает пароль (если пароль задан при создании ODBC-соединения в сеансе ODBC-администрирования).

hjtlbyttn оманда

хотя и временная, то для навигации по ней следует использовать команды FoxPro.

ния:

000000000000000000000000000