Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 [ 88 ] 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146

Add Data Source

Select which ODBC driver you want to use Jjqm the list, then choose OK.

Installed ODBC Drivers:

ICR Oracle?

CR SQLBase CR Sybase System 10 Microsoft Access Driver (".mdbl fvlicrosoft dBase Driver (".dbf) Microsoft Excel Driver (".xls) Microsoft FoxPro Driver ["M]

Help

Рис. 8.2. Выбор необходимого ODBC драйвера

Создав Data Source, мы имеем все для подготовки соединения и записи его определения в текущую базу данных. Выберите из комбинированного списка с заголовком "Data Source" ваш Data Source (извините за тавтологию), затем введите ваше пользовательское имя в текстовое поле UserID и пароль в текстовое поле PassWord. Сверху от трех полей, которые мы заполнили, находятся две кнопки выбора, правая называется "Connection String". Если вам больше нравится вводить Connection String, то выберите эту кнопку выбора, - в таком случае вы берете на себя не очень обременительную, но все-таки обязанность написать строку соединения самостоятельно, не делегировав эти права Visual FoxPro. Вам нужно набрать что-либо подобное (рис. 8.3):

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

После запуска вам необходимо последовательно заполнить текстовые поля, которые называются Data Source, UserID и Password. Здесь есть один момент, который необходимо отметить. Data Source уже должен быть создан посредством Администратора ODBC. Как уже указывалось, обычно после установки Visual FoxPro, Администратор ODBC уже присутствует на вашем компьютере. Запустите Администратор ODBC и создайте Data Source с использованием ODBC драйвера, в нашем случае это SQL Server (рис. 8.2). С помощью кнопки Drivers вы можете проверить наличие имеющихся на компьютере драйверов ODBC. Для создания Data Source необходимо нажать на кнопку Add и в появившемся диалоговом окне заполнить необходимые поля. Имена DataSource старайтесь давать осмысленные, чтобы в дальнейшем помнить, какой Data Source за что отвечает. Далее заполните имя сервера и в диалоге Options укажите имя базы данных, к которой вы будете подсоединяться. В примерах мы будем подсоединяться к базе данных Pubs, которая поставляется как образец с MS SQL Server. В зависимости от используемого драйвера диалоговые окна, открывающиеся после нажатия кнопки Add и выбора нужного драйвера, несколько различаются, но, как правило, главное, что нам нужно - это имя базы данных, доступ к таблицам которой мы хотим иметь, путь или имя папки, в которой хранятся таблицы, если приложение не работает с базой данных как с контейнером таблиц.



Connection Do signer - Connecti

Dta Souca. LtHiid, Pasvwfd

Conneciion inrfl

firmed Siring

D 5H -1 GOT □ SQ L;U serl D -lAM GEli 1U5 J

Q iiplair OD&C Looin Prampts

F Anctwonous E»eojti(jn Г" Difplay Waning? atch Processing

17 AUonubcLBrcactiGns

CoBnaQliofi (asdt

ill 5

Wait Tine (msj:

:£!

Рис. 8.3.

DSN=IGOTOSQL;UserID=IAMGENIUS; Password=JesusChristSuperStar;Database=Pubs

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

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

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

2. Окно будет появляться всегда.

3. Окно не будет появляться никогда.

строке

Команда CREATE CONNECTION может использоваться для того, чтобы создавать соединения программным путем, правда, при этом если вы не укажете предложение DATASOURCE, то все равно на экране появится Конструктор соединения. База данных также должна быть открыта, как и при создании Соединения с помощью Конструктора соединения.

Соединение, созданное в предыдущем примере, программным путем можно создать так:

CREATE CONNECTION mysqlconnect ; DATASOURCE "igotosql" ;

USERID "Iamgenius" PASSWORD "JesusChristSuperStar"

Как уже было упомянуто, SQL pass-thtough - это средство по созданию SQL команд и передачи их в базу данных SQL. Первой мы рассмотрим функцию SQLCONNECT(), которая устанавливает соединение с источником данных. С помощью этой функции можно создать стандартное соединение (Standard Connection), строку соединения (Connect string) и поименованное соединение (Name Connection).

Ниже приводятся примеры для создания каждого типа соединения.

Стандартное соединение

hndl=SQLCONNECT(igotosql,iamgenius) Строка соединения

hndl=SQLCONNECT(igotosql,iamgenius, JesusChristSuperStar,pubs)

Поименованное соединение

hndl=SQLCONNECT(mysqlconnect)



После создания соединения мы можем установить его свойства. Это возможно практически для всех свойств, кроме двух, связанных с внутренними указателями ODBC: ODBChdbc и ODBChstmt. Свойства можно устанавливать с помощью Конструктора соединения или с помощью функции SQLSETPROP(). Для проверки текущих установок свойств используется функция SQLGETPROP().

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

SQLSETPROP(nConnectionHandle, cSetting, eExpression)

Функция SQLSETPROP() устанавливает свойства активного соединения. Надо использовать эту функцию для установки свойств на уровне соединения. Чтобы установить эти свойства на уровне окружения Visual FoxPro и сделать их значениями по умолчанию, нужно использовать вместо указателя соединения (аргумент nConnectionHandle) значение 0.

Функция SQLSETPROP() возвращает 1, если установка свойства завершилась успешно, -1, если случилась ошибка на уровне соединения, или -2, если ошибка случилась на уровне окружения. Свойство ConnectTimeOut может быть установлено только на уровне Visual FoxPro. Все остальные свойства можно устанавливать как на уровне Visual FoxPro, так и на уровне соединения. Установки, сделанные на уровне Visual FoxPro, являются значениями по умолчанию для всех последующих вновь создаваемых соединений.

Функция SQLGETPROP() служит для чтения свойств текущего соединения. Если аргументом вместо указателя на соединение будет значение 0, то мы получим текущие установки по умолчанию для текущего окружения Visual FoxPro.

Синхронный и асинхронный процессы

Когда вы делаете запрос к внешнему источнику данных, Visual FoxPro выполняет запрос синхронно. (Синхронный процесс - это процесс по умолчанию для Visual FoxPro.) Visual FoxPro не возвращает контроль приложению, пока SQL выражение не выполнится полностью. Программа останавливает свою работу и ждет, пока не обработается весь запрос и данные не вернутся к клиенту. Тем не менее при использовании SQL pass-through вы можете сделать процесс асинхронным, то есть программа может выполнять свои следующие команды, а выборка будет идти в фоновом режиме, заполняя курсор набором данных. Например:

myhandle=SQLCONNECT("mysqlconnect")

lA=SQLGETPROP("myhandle", "Asynchronous")

IF !lA=SQLSETPROP("myhandle","Asynchronous",.T.)

ENDIF

Свойство BatchMode определяет, как будут выбираться множественные наборы данных, когда используется функция SQLEXEC(). Значение по умолчанию для свойства BatchMode - истина. При этом не возвращается никаких результатов от функции SQLEXEC(), пока функция не завершит свое выполнение.

Например, если функция SQLEXEC() содержит два выражения SQL SELECT, никаких результатов не будет возвращено, если оба процесса запущены в режиме BatchMode, установленным в истину.

Если режим не пакетный, то результаты возвращаются в паре с функцией

SQLMORERESULTS(). Например:

myhandle=SQLCONNECT("mysqlconnect") =SQLSETPROP(myhandle,"MatchMode",.T.)

=SQLEXEC(myhandle,"SELECT * FROM account",; "SELECT * FROM Country","Results") mores=0

DO WHILE mores << 2

mores=SQLMORERESULTS(myhandle) ENDDO

Сочетание значений двух свойств дает нам четыре комбинации возможных режимов:

Cинхронный Асинхронный

Synchronous Batch Asynchronous Batch

Synchronous NonBatch Asynchronous Nonbatch



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 [ 88 ] 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146