Программирование >>  Руководство по созданию web приложений 

1 ... 92 93 94 [ 95 ] 96 97 98 ... 141


Для формирования строки сообщения об ошибке используется шаблон atlrng из стандартной библиотеки шаблонов Поэтому в исходном тексте мы сделали такие определения:

tlnclu

using

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

SQLHENV

hDbc = а

В hEnv хранится идентификатор среды исполнения, в перемен-

ной hDbc - идентификатор . 1я с источником данных, а в переменной

hStrat - идентификатор команды.

Функция main

Функция ша1п выполняет . . установку соединения, создание и

. команды, извлечение и на экран результатов ее . : ,

В области . переменных функции main мы определили переменную

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

фейса ODBC, три строки, необходимые для подключения к : данных

(содержащих имя . им пользователя и а также стро-

ку класса string для хранения сообщения об

UCHAR - =

String sErrlVlsg;

Получив функция ша1п среду выполнения liini-

граммы, получая соответствующие идентификаторы: гс = . NULL, .

lf(f4 \= - -. - .- . -

return 1,

1С = SQLSetEnvAttr(hEnv,

(см. CMf{t. стр.)

Полные исходные гек* ты программы ODBCAPP находятся в листинге 6-1.

Листинг §1 Вы найдете в файле ch6\odbcapp\odbcapp.cpp на прилагаемом к книге компакт-диске.

Глобальные определения и константы

Для к функциям и константам программного интерфейса ODBC мы

включили в исходные тексты нашего приложения четыре файла:



: ! = return 1;

!= &&

return 1;

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

кодом 1. в том, что на данном этапе средства расширенной диагностики

ошибок доступны.

Далее программа устанавливает соединение с : данных:

szDSN,

char*)szDSN),

&&

return

Еслифункция SQLConnect вернулакод ошибки, мы вызывaeмфyнкциюGetEг-определенную в нашей программе. О ней мы поговорим позже, а сейчас только скажем, что эта функция извлекает заголовки диагностических записей и формирует из них текстовую строку sEff Изд. которая затем отображается на консольном экране.

В том случае, если функции main удалось открыть соединение с источником данных, она создает идентификатор команды и запускает команду на выполнение: гс = . . ; hDbc,

hDbc, sErrMsg);

retiirii 1;

select

return 1;

(unsigned Name, Password,

!= SQL

Rights from managers , SQL 8TS).

sErrMsg);



16. Связь приложений с базами данных через ODBC

В качестве команды мы простой оператор SELECT,

ЮЩИЙ несколько полей из таблицы managers.

Для обработки ощибочных ситуаций здесь вызывается функция

Она извлекает не только заголовки диагностических записей, по и поля записей состояния, формируя из этой информации строку об ощиб-

ке. Записи состояния становятся доступными только после соеди-

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

Следующий этап - привязка локальных переменных к полям набора извлеченных в результате команды:

MlINTFGEB рМишдвПП:

SQLCHAR SQLINTEGER

szPass[MAXNAME SQLINTEGER cbPass;

SQLINTEGER

SQLCHAR

SQLINTEGER

= SQLBindCoKhStmt, 2, t = SQLBindCoKhStmt, 3, = SQLBindCoKhStmt, 4,

MAXNAME, .ictMame;; szPass, MAXNAME, ScbPass);

HEST.aHP, .StaLaatLeaia,

= SQLBindCoKhStmt, 5, szRights, MAXNAME,

мы последовательно привязываем пять локальных переменных nManagerlD, szName, szPass, tsLastLogin, szRights к столбцам набора записей с именами Password, LastLogin, Rights соответственно. В этой главе мы уже о том, как выполнить привязку данных с SQLBindCol.

После выполнения привязки функция main запускает цикл извлечения записей из полученного в результате выполнения

!= SoaJlCLOATA}

aitf( i4rt I iiOa I llaa Siaa (not logged yet j\a , nManagerlD, szName, szPass, szRights);

else I

nManagerlD, szName,

szRights,



1 ... 92 93 94 [ 95 ] 96 97 98 ... 141

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика