<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.

Простые ODBC классы без использования MFC

Автор: Justin Kirby

Скачать исходники - 7 Kb

Описание

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

В дополнение

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


Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU Проект ReactOS