| Часть полного текста документа:Простые ODBC классы без использования MFCМне пришлось написать довольно много приложений связанных с базами данных. Большинство из них было небольшими и использовали MFC класс CRecordset. Зависимость от MFC меня не всегда устраивала и тогда я засел за создание собственного класса. Таким образом появился набор, состоящий из нескольких классов, обеспечивающий необходимые возможности для работы с ODBC драйвером.
 На самом деле эти классы не претендуют на что-то "совершенное" и "мощное", однако они могут очень даже пригодиться для тех кто захочет работать с драйвером ODBC напрямую через API функции.
 В файлах ODBC.h и ODBC.cpp содержится три класса CODBCCnx, CODBCQuery и CODBCFatQuery. Основным из них является CODBCCnx, который коннектится к DBMS, а так же осуществляет все необходимые действия по обработке запросов. CODBCQuery и CODBCFatQuery являются зарезервированными, и я планирую с их помощью расширить возможности основного класса. Класс CODBCCnx
 CODBCCnx содержит три функции Connect(), Disconnect() и IsOk(). Функция Connect() позволяет связаться с драйвером DSN или используя сетевое имя компьютера.
 //связываемся с DBMS через DSN, "foodsn"
 CODBCCnx dsn();
 dsn.Connect("foodsn","username","password");
 //Замечание: CODBCCnx dsn("foodsn",username","password"); идентично предыдущей строке
 //проверяем успешность соединения
 if(!dsn.IsOk()){
 //успешное соединение с базой
 }
 else{
 //ошибка при соединении
 }
 //другой способ осуществления связи с базой данны, используя сетевое имя компьютера
 CODBCCnx name("SQL Server","CompName","username","password");
 //опять проверяем успешность соединения
 if(!name.IsOk()){
 //успешное соединение с базой
 }
 else{
 //ошибка при соединении
 }
 Итак, мы соединились с базой данных, теперь давайте попробуем завершить сеанс связи. Для этого нам пригодится функция Disconnect(). В параметрах этой функции можно задавать различные параметры. Например, если транзакции находятся в активном состоянии, то с помощь этих параметров можно вернуть их в исходное состояние, либо подождать их завершения. Если вызвать функцию Disconnect, без параметров, то все транзакции вернутся в исходное состояние.
 //завершаем сеанс связи (dsn)
 dsn.Disconnect(); //возвращаем незавершённые транзакции в предыдущее состояние
 //Замечание: dsn.Disconnect(SQL_ROLLBACK) тоже самое, что и предыдущая строка
 //завершаем сеанс связи с базой "name"
 name.Disconnect(SQL_COMMIT); //завершаем все незавершённые транзакции
 Класс CODBCQuery
 Итак, мы рассмотрели основные действия для общения с базой данных. Но есть ещё один момент. Не полохо было бы работать с объектом, созданным ранее, через указатели, то есть сделать его доступным из других классов. Для этого был создан класс CODBCQuery. CODBCQuery не может использоваться как самостоятельный объект, он постоянно привязан к основному классу:
 //Устанавливаем соединение, используя dsn
 CODBCCnx *pDsn = new CODBCCnx("foodsn", "username", "password");
 CODBCQuery qry1, qry2;
 if(!pDsn->IsOk())
 {
 //успешный коннект!! теперь дадим в доступ данный сеанс связи :)
 pDsn->Connect(qry1.h_qstmt);
 pDsn->Connect(qry2.h_qstmt);
 }
 else{
 //ошибка
 }
 //так же эту процедуру можно совешнить за один шаг.
 CODBCQuery qry(new CODBCCnx("foodsn", "username", "password"), true);
 //либо мы можем брать pDsn и передавать его в связку новых объектов
 CODBCQuery qry2(pDsn), qry3(pDsn,false);
 //либо можно заставить класс CODBCQuery самостоятельно коннектиться
 CODBCQuery qry4("SQL Server", "CompName", "username", "password");
 //используя DSN
 CODBCQuery qry5(NULL, "foodsn", "username", "password");
 Заключительная заметка: существует глобальная функция SQLSuccess().  ............
 |