|
Программирование >> Руководство по созданию web приложений
Обработка ошибки Все, что Вам нужно сделать для создания соединения, - вызвать метод Open класса - - В данном классе имеется несколько перегруженных определе- ний Open, позволяющих указывать или только некоторые параметры. В нашем случае через первый параметр мы передаем методу Open идентификатор провайдера данных в виде текстовой строки. Другие перегруженные определения этого метода позволяют ссылаться на глобальный идентификатор провайдера Г I.Sll.i. второй, третий и четвертый параметры методу Open передаются имя источника имя пользователя пользователя соответственно. При необходимости Вы сможете передать эти параметры и через структуру DBPROPSET, применяя другой вариант определения метода Open. Когда работа с . данных его нужно закрыть, вызвав метод Close класса CDataSource: В классе CDataS ource определено еще несколько методов, которые мы не используем в laaaaii книге. Кним методы GetPropertiesnGetProperty, предназначенные для - свойств соединения с провайдером, метод Getlnitializat ion St ring, позволяющий получить строку инициализации источника данных (включая пароль) и другие методы, предназначенные для < aaaiaai-ИИ а с источником Класс CSession Для создания сеанса, необходимого для работы с командами и запи- 13i>i должны использовать класс CSession. Это очень просто: CSession sSession; эшибки Вам необходимо вызвать метод Open класса Caasaiea. передав ему в качестве параметра ссылку па . открытый объекткласса CDataS ource. работы с . данных приложение должно закрыть все открытые сеансы методом Close: Помимо методов Open и Close, в классе CSession определено несколько методов для работы с транзакциями. Это StartTransaction (начало транзакции), Is DSN; II . , ) Bookstore , dtry, ); Commit (фиксация транзакции), Abort (отмена , - и insa-jtionlnfo (получение информации о транзакции). Класс CCommand Класс CCommand обеспечивает методы л.чя выполнения команд. Он определен следующим образом: template <class TAccessor = .а:а - class = CFiosset, class THultiple class CCommand : public : -, TB0Mse1:>, public public TMultiple Здесь класс TAccessor представляет собой класс объекта привязки Accessor, с которым мы уже имели дело в главе, TRowset - класс набора записей, создаваемого при выполнении : и Traulti который используется с командами, возвращающими одновременно несколько . . . Несмотря па устрашающий вид определения класса . . пользоваться им достаточно просто. Вот как мы создаем объект cmd этого класса: CCommand <CAccessor<tabClients> > cmd; Здесь мы ссылаемся на класс tabClients, в нашем приложении для выполнения привязки данных: class tabClients ( public: TCHAR TCHAR - 0 a, ICHAII a DBTIHESTAMP iiLRejisteiPate; TCHAR Этот класс определяет всю информацию, необходимую для выполнения привязки. Фактически он содержит описание полей набора который будет образован после выполнения запроса к базе данных. В нашем случае это lailna ца clients, входящая в состав базы данных Интернет-магазина, о которой мы уже рассказывали ранее (поэтому, кстати, мы и выбрали для класса привязки имя tabClients), Заметьте, мы не создаем объектов класса tabClients, нам нужно только определение. В классе tabClients мы расположили определения - \ сделанные с применением обычных типов данных С+ + . Кроме этого, в этом классе есть описание столбцов набора записей, сделанное при помощи макрокоманд BEGINCO- X . единственный параметр макрокоманде BEOIHCOLUHNHAP нужно указать имя класса привязки. В нащем случае это tabClients. Макрокоманда 4N curav предназначенная для выполнения привязки данных, имеет два . ; ; - номер столбца и имя поля данных записи. И наконец, макрокоманда i Я-: ПНИАР, закрывающая определение столбцов набора, не имеет параметров. Для того чтобы запустить команду на выполнение. Вы должны воспользо- методом Open, определенным в классе CCOiipand: TCHAR .:: I SELECT - I, UserlD, Password, fleclsterOate. Email FROM clients ; hr = ciy.OpenisEessioa, mySQi.): lf( iLED(tir)) Обработка ошибки Этот метод очень прост в i Достаточно передать ему в качестве первого параметра ссылку на открытый сеанс, а в качестве второго - адрес текстовой строки команды, подлежащей выполнению. В результате выполнения команды создается набор записей, доступ к которому осуществляется с помощью все того же класса CCommand. Для этого в программе необходимо организовать цикл: *Гп1 {ет(1 HoaaieatO == S OK) 1 emd.iii CUeatID; eBcJ.iii ijserii): emd.rri Pa6Sword; atid. nEitil; cud.m fiegisterDate; Здесь мы перебираем записи образованного набора с помощью метода MovoNaxt, определенного в классе CCommand. Для доступа к значениям полей достаточно просто сослаться на соответствующие поля класса CCommand. Это возможно благодаря применению библиотеки щаблонов ATL. По заверщении цикла обработки записей i должно закрыть объект класса ... а . сеанс и соединение с источником данных. Все это делается ме- Close соответствующих классов: dsDSN.CIoseO;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |