|
Программирование >> Руководство по созданию web приложений
Для формирования строки сообщения об ошибке используется шаблон 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,
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |