Название: Простые ODBC классы без использования MFC
Вид работы: статья
Рубрика: Информатика и программирование
Размер файла: 14.59 Kb
Скачать файл: referat.me-140445.docx
Краткое описание работы: Мне пришлось написать довольно много приложений связанных с базами данных. Большинство из них было небольшими и использовали MFC класс CRecordset. Зависимость от MFC меня не всегда устраивала и тогда я засел за создание собственного класса.
Простые 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(). Если передать в неё переменную SQLRETURN, то функция вернёт не нулевое значение, если в этой переменной указать значение SQL_SUCCESS или SQL_SUCCESS_WITH_INFO. Иногда возвращаемая информация бывает очень даже полезной.
В дополнение
В архиве содержатся два файла strutil.h и strutil.cpp. Это очень простые функции имеющие тип char*. Меня раздражает постоянная необходимость по выделению памяти для strcpy, и т.д... Поэтому мне больше подходят эти две функции взамен стандартных. Их названия начинаются с jkl_str. Надеюсь, они Вам понравятся :).
Похожие работы
-
Свободная Память
Если вы пользовались классом slist, вы могли обнаружить, что ваша программа тратит на заметное время на размещение и освобождение объектов класса slink.
-
Производные Классы
Построение Производного Класса . Функции Члены. Видимость. Указатели. Иерархия Типов. Конструкторы и Деструкторы. Поля Типа. Виртуальные Функции.
-
Классы в C++
Одной из основных черт C++, которой нет в С, является концепция классов. По существу, классы - самое важное понятие в C++. Классы похожи на структуры языка С. Однако структура С определяет только данные, ассоциированные с этой структурой.
-
Полиморфные Вектора
У вас есть другая возможность - определить ваш векторный и другие вмещающие классы через указатели на объекты некоторого класса.
-
На чем писать программы? (краткий обзор возможностей языков программирования)
Если нужно написать серьезную программу, быструю и занимающую мало места, нужно выбирать между VC++ и Builder. Если при этом вы любите pascal то ваш путь к Builder(Delphi).
-
Установка PHPNuke
То есть вы захотели стать владельцем функционального веб портала всего за несколько минут. Ну что же, эта статья вам поможет, т.к. я не по наслышке знаю, что такое установка PHPNuke. Устанавливать будем PHPNuke 6.0.
-
Добавление к Классу
Для производного класса можно определить данные и функции дополнительно к тем, которые наследуются из его базового класса. Это дает альтернативную стратегию обеспечить средства связанного списка.
-
Интерфейсы как решение проблем множественного наследования
В этой работе разбирается проблема множественного наследования в языке программирования С++ и возможное ее решение путем применения абстракций интерфейсов.
-
Работа с базами данных в JAVA на основе соединения JDBC
Предварительная компиляция SQL-запросов по месту исполнения. Использование инструкции prepareStatement. Использование синтаксиса определения вызова для получения значения, возвращаемого процедурой или функцией. Создание инструкции на выборку по запросу.
-
Windows Forms: Современная модель программирования для создания GUI приложений
Модель программирования Windows Forms. Приложение "Hello World" с Windows Forms.