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

1 ... 86 87 88 [ 89 ] 90 91 92 ... 141


Обработка ошибки

Все, что Вам нужно сделать для создания соединения, - вызвать метод 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;



1 ... 86 87 88 [ 89 ] 90 91 92 ... 141

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