Приветствую Вас на своем сайте!
Главная Форум Полезные файлы Музыка Cофт Профиль Фото галерея Выход Вход
  Менюшка

  Мини-чат

  Cыграйка

  Бонус wmr


Получите WMR-бонус
от 0,01 до 0,20 WMR на свой кошелек!

  Проголосуй

Какой у вас антивирусник?
Всего ответов: 34

Главная » 2008 » Сентябрь » 21 » Простые ODBC классы без использования MFC
Простые ODBC классы без использования MFC
10:05:30

Мне пришлось написать довольно много приложений связанных с базами данных.
Большинство из них было небольшими и использовали MFC класс CRecordset.
Зависимость от MFC меня не всегда устраивала и тогда я засел за создание
собственного класса. Таким образом появился набор, состоящий из нескольких
классов, обеспечивающий необходимые возможности для работы с ODBC драйвером.


На самом деле эти классы не претендуют на что-то "совершенное" и "мощное",
однако они могут очень даже пригодиться для тех кто захочет работать с драйвером
ODBC напрямую через API функции.


В файлах ODBC.h и ODBC.cpp содержится три класса
CODBCCnx,
CODBCQuery и
CODBCFatQuery. Основным из
них является CODBCCnx,
который коннектится к DBMS, а так же осуществляет все необходимые действия по
обработке запросов. CODBCQuery
и CODBCFatQuery являются
зарезервированными, и я планирую с их помощью расширить возможности основного
класса.


Класс 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().
Если передать в неё переменную
SQLRETURN,
то функция вернёт не нулевое значение, если в этой переменной указать значение
SQL_SUCCESS или SQL_SUCCESS_WITH_INFO.
Иногда возвращаемая информация бывает очень даже полезной.
В дополнение

В архиве содержатся два файла strutil.h и strutil.cpp. Это очень простые
функции имеющие тип char*.
Меня раздражает постоянная необходимость по выделению памяти для
strcpy,
и т.д... Поэтому мне больше подходят эти две функции взамен стандартных. Их
названия начинаются с jkl_str. Надеюсь, они Вам понравятся :).


По материаллам сайта: www.realcoding.net

Категория: Интиресные статьи | Просмотров: 284 | Добавил: epidemic | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
  Личный кабинет

Привет: Зашедший

Сообщения:
$$$ для web-мастеров
Гость, мы рады вас видеть. Пожалуйста
зарегистрируйтесь или
авторизуйтесь!

  Календарь

  Наши Друзья

Effectt.com - система обмена ссылками. обмен ссылками: добавить ссылку, прямые ссылки

Получить WMR-бонус на свой кошелек!
Linq.RU - Обмен ссылками
  Статистика сайта

Всего connect: 1
Зашедших: 1
Зареганых: 0

статистика Top 100: Развлечения, игры, юмор Бесплатная раскрутка сайта
Copyright Epidemic © 2019Используются технологии uCoz