Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »Информатика

Простые ODBC классы без использования 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 не может использоваться как самостоятельный объект, он постоянно привязан к основному классу: //Устанавливаем соединение, используя dsnCODBCCnx *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");//используя DSNCODBCQuery qry5(NULL, "foodsn", "username", "password");Заключительная заметка: существует глобальная функция SQLSuccess(). Если передать в неё переменную SQLRETURN, то функция вернёт не нулевое значение, если в этой переменной указать значение SQL_SUCCESS или SQL_SUCCESS_WITH_INFO. Иногда возвращаемая информация бывает очень даже полезной.В дополнение В архиве содержатся два файла strutil.h и strutil.cpp. Это очень простые функции имеющие тип char*. Меня раздражает постоянная необходимость по выделению памяти для strcpy, и т.д... Поэтому мне больше подходят эти две функции взамен стандартных. Их названия начинаются с jkl_str. Надеюсь, они Вам понравятся :)....
Другие файлы:

Open DataBase Connectivity - открытый интерфейс доступа к базам данных
Администратор источников данных ODBC: его запуск и принципы работы, возможности эксплуатации и управления. Вкладка "Пользовательское DSN", ее содержан...

Фактор-группы. Cмежные классы
Теория групп как фундаментальное понятие и один из разделов современной математики. Основные определения и теоремы. Смежные классы: правые и левые, дв...

Криптографические средства Microsoft .NET
Обзор криптографических классов библиотеки Framework Class Libr: классы алгоритмов симметричного и асимметричного шифрования, хеширования. Классы-форм...

SQL и процедурно-ориентированные языки
Курс знакомит слушателей со стандартами языка управления данными SQL-92 и SQL-99. Описываются механизмы разработки приложений баз данных, и в частност...

Различные классы баз данных по предметным областям использования