Когда вы создаете удаленное представление, вы выбираете имя источника данных ODBC или имя соединения, которое затем будет использовано в качестве канала связи с удаленным сервером при активизации представления. Для прямого обращения к удаленным данным через сквозные запросы (SQL pass-through) вы должны иметь дескриптор активного соединения. Дескриптор представляет собой значение, которое ссылается на объект; в данном случае, дескриптор должен ссылаться на соединение с источником данных. Для получения дескриптора вы запрашиваете соединение с источником данным посредством функции SQLCONNECT() или SQLSTRINGCONNECT(). Если соединение было успешно установлено, ваше приложение получает дескриптор соединения для использования в последовательных вызовах из Visual FoxPro.

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

NoteСовет

Visual FoxPro полагается на определение источника данных ODBC, которое хранится в Windows при подключении к источнику данных. Если вы измените имя или информацию для регистрации для источника данных, то имейте в виде, что такие изменения могут иметь следствием, что приложение, использующее этот источник данных не сможет подключиться к желаемому удаленному серверу.

Управление свойствами среды и соединения

Среда клиент/сервер устанавливается каждый раз, когда вы открываете Visual FoxPro. Среда существует для открытой сессии Visual FoxPro и исчезает, когда вы закрываете Visual FoxPro. Среда клиент/сервер содержит:

  • Глобальные свойства, которые действуют как прототипы для новых соединений.

  • Значение ошибок для ошибок, которые могут возникнуть извне конкретного соединения.

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

  • Свойства, определенные одним или двумя значениями, могут использовать логическое значение (.F. или .T.) для eExpression.

  • Имя свойства может быть сокращено для его короткого распознаваемого сокращения. Например, вы можете использовать "Asynchronous", "Asynch", или "A" для указания свойства с именем Asynchronous. Имена свойств не являются чувствительными к регистру символов.

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

Установка свойств соединения

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

Свойства соединения Visual FoxPro
Для ... ... используйте установку ... Цель

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

ConnectString

Получить строку регистрации соединения.

 

DataSource

Получить именя источника данных, как оно определено ODBC.

 

Password

Получить пароль соединения.

 

UserID

Получить идентификацию пользователя.

работы с соединениями совместного использования

ConnectBusy

Получаем True (.T.), если соединение совместного использования занято; в противном случае получаем false (.F.).

управления интерфейсом отображения

DispLogin

Управляет тем, когда будет отображен диалоговое окно регистрации ODBC.

 

DispWarnings

Управлеяет - будут ли отображаться некритические предупреждения или нет.

управления интервалами времени

ConnectTimeout

Определяет время (в секундах) для возврата ошибки о превышении лимита времени ожидания соединения.

 

IdleTimeout

Определяет временной интервал пассивного ожидания (в секундах). Указанное соединение будет деактивировано после истечения указанного промежутка времени.1

 

WaitTime

Управляет промежутком времени в миллисекундах которое осталось до проверки со стороны Visual FoxPro - было ли завершено исполнение SQL предложения.

 

QueryTimeout

Управляет промежутком времени (в секундах) ожидания до возврата общей ошибки превышения лимита времени запроса.

управления транзакциями

Transactions

Определяет как соединение управляет транзакциями на удаленной таблице.

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

Asynchronous

Определяет - будут ли наборы результатов возвращаться синхронно (по умолчанию) или асинхронно.

 

BatchMode

Определяет - будет ли SQLEXEC() возвращать все наборы результатов сразу (по умолчанию) или индивидуально через SQLMORERESULTS().

 

PacketSize

Определяет размер сетевого пакета, используемого соединением.

отображения внутренних дескрипторов ODBC

ODBChdbc2

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

 

ODBChstmt2

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

1. Если установлен режим ручного управления транзакциями, соединение не деактивируется.

2. Если соединение деактивировано, значения ODBChdbc м ODBChstmt более не являются действительными. Не освобождайте или не передавайте эти значения в библиотеках пользователя.

Для получения более подробной информации о свойства соединения и их значениях по умолчанию смотрите описание функции SQLSETPROP().

Управление установками свойств среды

Значения, которые вы устанавливаете в среде Visual FoxPro, используя дескриптор 0, используются в качестве прототипов или значений по умолчанию для каждого последующего соединения или прикрепления.

Для просмотра текущих установок свойств среды используйте функцию SQLGETPROP() с 0 в качестве значения дескриптора.

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

 CopyCode imageСкопировать код
? SQLGETPROP(0, "WaitTime")

Если вы установили значение свойства DispWarnings в true (.T.), Visual FoxPro будет отображать любые ошибки среды с момента установки свойства и, кроме того, установит DispWarnings в true (.T.) для вновь создаваемых соединений.

Хотя значения, которые вы установили для нулевого дескриптора используются в качестве значений прототипов для каждого соединения, вы можете, кроме того установить настраиваемые свойства для индивидуального соединения вызовом функции SQLSETPROP() с дескриптором этого соединения. Исключениями для такого случая являются свойства ConnectTimeout, PacketSize и DispLogin, чьи установки соединение наследует во время соединения. Если вы измените значения свойств ConnectTimeout, PacketSize или DispLogin, то они не будут приниматься во внимания до момента повторного соединения.

Управления соединением и объектами представления

Вы можете управлять соединениями и представлениями установкой свойств соединения и объекта представления. Свойства, которые управляют базами данных, таблицами, полями таблиц, определениями представлений, полями представлений, именованными соединениями, активными соединениями или активными курсорами представлений называются свойствами движка - engine properties. Вы можете отобразить или установить свойства движка с помощью одной из приведенных ниже функций Visual FoxPro:

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

CURSORGETPROP()

CURSORSETPROP()

DBGETPROP()

DBSETPROP()

SQLGETPROP()

SQLSETPROP()

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

Для установки свойства Соединение Представление

Объект 0

SQLSETPROP( )

CURSORSETPROP( )

Определение объекта в базе данных

DBSETPROP( )

DBSETPROP( )

активного объекта

SQLSETPROP( )

CURSORSETPROP( )

Свойства движка - Engine Properties

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

FoxPro Properties Table Sample

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

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

Свойство движка - Engine property Применяется к

Asynchronous

Определению соединения: смотрите описание функции DBSETPROP( ). Активному соединению: смотрите описание функции SQLSETPROP( ).

BatchMode

Определению соединения: смотрите описание функции DBSETPROP( ). Активному соединению: смотрите описание функции SQLSETPROP( ).

BatchUpdateCount1

Определениям представления: смотрите описание функции DBSETPROP( ). Активным курсорам представления: смотрите описание функции CURSORSETPROP().

Buffering

Активным курсорам представления: смотрите описание функции CURSORSETPROP( ).

Caption

Полям в таблицах, полям в определении представления: смотрите описание функции DBSETPROP( ).

Comment

Базам данных, таблицам, полям в таблицах, определениям представлений, полям в определении представлений, определению соединения: смотрите описание функции DBSETPROP( ).

CompareMemo

Определениям представления: смотрите описание функции DBSETPROP( ). Активным курсорам представления: смотрите описание функции CURSORSETPROP( ).

ConnectBusy

Активному соединению: смотрите описание функции SQLGETPROP( ).

ConnectHandle

Активным курсорам представления: смотрите описание функции CURSORGETPROP( ).

ConnectName1

Определениям представления: смотрите описание функции DBSETPROP( ). Активному соединению: смотрите описание функции SQLGETPROP( ). Активным курсорам представления: смотрите описание функции CURSORGETPROP( ).

ConnectString

Определению соединения: смотрите описание функции DBSETPROP( ). Активному соединению: смотрите описание функции SQLGETPROP( ).

ConnectTimeout

Определению соединения: смотрите описание функции DBSETPROP( ). Активному соединению: смотрите описание функции SQLSETPROP( ).

Database

Активным курсорам представления: смотрите описание функции CURSORGETPROP( ).

DataSource

Определению соединения: смотрите описание функции DBSETPROP( ). Активному соединению: смотрите описание функции SQLGETPROP( ).

DataType

Полям в определении представления: смотрите описание функции DBSETPROP( ).

DefaultValue

Полям в таблицах, полям в определении представления: смотрите описание функции DBSETPROP( ).

DeleteTrigger

Таблицам: смотрите описание функции DBGETPROP( ).

DispLogin

Определению соединения: смотрите описание функции DBSETPROP( ). Активному соединению: смотрите описание функции SQLSETPROP( ).

DispWarnings

Определению соединения: смотрите описание функции DBSETPROP( ). Активному соединению: смотрите описание функции SQLSETPROP( ).

FetchAsNeeded

Определениям представления: смотрите описание функции DBSETPROP( ). Активным курсорам представления: смотрите описание функции CURSORGETPROP( ).

FetchMemo1

Определениям представления: смотрите описание функции DBSETPROP( ). Активным курсорам представления: смотрите описание функции CURSORGETPROP( ).

FetchSize1

Определениям представления: смотрите описание функции DBSETPROP( ). Активным курсорам представления: смотрите описание функции CURSORSETPROP( ).

IdleTimeout

Определению соединения: смотрите описание функции DBSETPROP( ). Активному соединению: смотрите описание функции SQLSETPROP( ).

InsertTrigger

Таблицам: смотрите описание функции DBGETPROP( ).

KeyField

Полям в определении представления: смотрите описание функции DBSETPROP( ).

KeyFieldList2

Активным курсорам представления: смотрите описание функции CURSORSETPROP( ).

MaxRecords1

Определениям представления: смотрите описание функции DBSETPROP( ). Активным курсорам представления: смотрите описание функции CURSORSETPROP( ).

ODBCHdbc

Активному соединению: смотрите описание функции SQLGETPROP( ).

ODBCHstmt

Активному соединению: смотрите описание функции SQLGETPROP( ).

Offline

Определениям представления: смотрите описание функции DBGETPROP( ).

PacketSize

Определению соединения: смотрите описание функции DBSETPROP( ). Активному соединению: смотрите описание функции SQLSETPROP( ).

ParameterList

Определениям представления: смотрите описание функции DBSETPROP( ). Активным курсорам представления: смотрите описание функции CURSORSETPROP( ).

Password

Определению соединения: смотрите описание функции DBSETPROP( ). Активному соединению: смотрите описание функции SQLGETPROP( ).

Path

Таблицам: смотрите описание функции DBGETPROP( ).

Prepared

Определениям представления: смотрите описание функции DBSETPROP( ).

PrimaryKey

Таблицам: смотрите описание функции DBGETPROP( ).

QueryTimeout

Определению соединения: смотрите описание функции DBSETPROP( ). Активному соединению: смотрите описание функции SQLSETPROP( ).

RuleExpression

Таблицам, полям в таблицах, определениям представления, полям в определениях представления: смотрите DBSETPROP( ).

RuleText

Таблицам, полям в таблицах, определениям представления, полям в определениях представления: смотрите DBSETPROP( ).

SendUpdates2

Определениям представления: смотрите описание функции DBSETPROP( ). Активным курсорам представления: смотрите описание функции CURSORSETPROP( ).

ShareConnection

Определениям представления: смотрите описание функции DBSETPROP( ). Активным курсорам представления: смотрите описание функции CURSORGETPROP( ).

SourceName

Активным курсорам представления: смотрите описание функции CURSORGETPROP( ).

SourceType

Определениям представления: смотрите описание функции DBGETPROP( ). Активным курсорам представления: смотрите описание функции CURSORGETPROP( ).

SQL

Определениям представления: смотрите описание функции DBGETPROP( ). Активным курсорам представления: смотрите описание функции CURSORGETPROP( ).

Tables2

Определениям представления: смотрите описание функции DBSETPROP( ). Активным курсорам представления: смотрите описание функции CURSORSETPROP( ).

Transactions

Определению соединения: смотрите описание функции DBSETPROP( ). Активному соединению: смотрите описание функции SQLSETPROP( ).

Updatable

Полям в определении представления: смотрите описание функции DBSETPROP( ).

UpdatableFieldList2

Активным курсорам представления: смотрите описание функции CURSORSETPROP( ).

UpdateName

Полям в определении представления: смотрите описание функции DBSETPROP( ).

UpdateNameList2

Активным курсорам представления: смотрите описание функции CURSORSETPROP( ).

UpdateTrigger

Таблицам: смотрите описание функции DBGETPROP( ).

UpdateType

Определениям представления: смотрите описание функции DBSETPROP( ). Активным курсорам представления: смотрите описание функции CURSORSETPROP( ).

UseMemoSize1

Определениям представления: смотрите описание функции DBSETPROP( ). Активным курсорам представления: смотрите описание функции CURSORGETPROP( ).

UserID

Определению соединения: смотрите описание функции DBSETPROP( ). Активному соединению: смотрите описание функции SQLGETPROP( ).

Version

Базам данных: смотрите описание функции DBGETPROP( ).

WaitTime

Определению соединения: смотрите описание функции DBSETPROP( ). Активному соединению: смотрите описание функции SQLSETPROP( ).

WhereType

Определениям представления: смотрите описание функции DBSETPROP( ). Активным курсорам представления: смотрите описание функции CURSORSETPROP( ).

1. Свойство используется изначально для удаленных представлений; установка не воздействует на производительность работы с локальными представлениями. Вы можете установить это свойство для локальных представоений если вы желаете предустановить свойство на локальном представлении, а затем перенести его для создания удаленного представления.

2. Свойство должно быть установлено для того, чтобы можно было посылать обновления удаленному источнику данных.

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

Вы можете обернуть транзакциями обновления, удаления и вставки в удаленных данных, используя один из приведенных ниже двух методов:

  • Режим автоматической транзакции

  • Режим ручного управления транзакцией

Выбранный вами режим управления транзакциями определяет - как Visual FoxPro обрабатывает транзакции на вашей локальной машине.

Вложенные транзакции

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

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

Смотрите также