Мне пришлось написать довольно много приложений связанных с базами данных. Большинство из них было небольшими и использовали 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. Надеюсь, они Вам понравятся :).
Другие работы по теме:
А. Тюрго об эволюции классовой структуры буржуазного общества (Контрольная)
А. Тюрго об эволюции классовой структуры буржуазного общества. А. Тюрго- это замечательный мыслитель и государственный деятель Франции. Он относился к течению физиократов. Анн Робер Жак развивал далее труды своего учителя и обогащал доктрину физиократии новыми суждениями о классовой структуре общества, о происхождении наёмного трудах и о многом другом.
Билеты по химии
и частичные ответы на некоторые из них Билет №1 Простые вещества . Количество вещества. Число Авогадро. Качественный анализ анионов и катионов. Билет №2
Политика Карла Маркса
Если Маркс действительно в некотором роде философ, он отличается от большинства таких мыслителей, относительно их размышлений, какими глубокомысленными они не были, тем, что он в высшей степени практичен, – оказывая помощь актуальным политическим силам и будучи фактически сам политической силой.
Классы капитальности
Классы капитальности Жесткость — это неизменность его геометрических форм и размеров. По долговечности здания (сооружения) делят на четыре группы: к первой относятся здания со сроком службы более 100 лет, ко второй — от 50 до 70 лет, к третьей — от 20 до 50 лет. Здания, возводимые на срок менее 20 лет, по долговечности не нормируют.
Социалистическая революция
Социалистическая революция — пролетарская революция, высший тип социальной революции, осуществляющей переход от капиталистической общественно-экономической формации к коммунистической формации. Согласно марксистской теории, социалистическая революция — пролетарская революция, в ходе которой происходит взятие политической власти рабочим классом,экспроприация класса капиталистов, уничтожение деления общества на классы, ликвидация эксплуатации человека человеком на основе общественной собственности на средства производства.
на Английском языке
Цель: научить работать с источниками (книгами, пособиями, справочниками и информационными сайтами); грамотрно работать с текстом; правильно и логично подбирать и обосновывать тему; находить соответствующий иллюстративно-графический материал
Физическое доказательство малой теоремы Ферма
Простые числа играют важную роль в теории чисел. Используя свойства симметрии спиновых конфигураций Изинга, можно доказать малую теорему Ферма о простых числах и обобщить её на некоторые составные числа. Используемый в статье метод доказательства приводит к «физической» интерпретации простых чисел.
Простые числа Мерсенна. Совершенные числа
Среди простых чисел особую роль играют простые числа Мерсенна - числа вида 1)М -1 , где - простое число. Они называются простыми числами Мерсенна по имени французского монаха Мерена Мерсенна (1588-1648), одного из основателей Парижской Академии наук, друга Декарта и Ферма. Так как
Архитектуры реализации корпоративных информационных систем
Преимущества и недостатки использования двух типов базовых архитектур Клиент-сервер и Интернет/Интранет, их компоненты и экономическая целесообразность. Информационные взаимосвязи компонентов WEB-узла, взаимодействие браузера, сервера и сценария CGI.
Рутс, Иоганн Георг Валентин
Валентин Рутс. Вильседе Иоганн Георг Валентин Рутс (нем. Valentin Ruths; 1825—1905) — немецкий ландшафтист. С 1843 г. упражнялся в рисовании на камне, в 1846 г. поступил в политехническую школу и посещал рисовальные классы античной залы Академии художеств в Мюнхене.
Социальный класс
План Введение 1 Социальные классы в марксизме 2 Немарксистские теории социальной стратификации Введение Социальные классы — общности, выделяемые по отношению к собственности и общественному разделению труда.
Табель о рангах
При равенстве класса по "Табели" военный чин считался выше придворного, а придворный выше гражданского. Чины в гвардии считались до 1884 года на два класса выше чем в армии, с1884 года на один класс выше.
Изучение социальной структуры в России в начале XX века
В отечественной дореволюционной социологии сосуществовали различные подходы к трактовке теории классов; но наиболее заметную роль играли: марксистский, "распределительный", "организационный", "производственный" подходы.
Авёричкин Фёдор Степанович
Биография На флоте с 1911, окончил классы унтер-офицеров учебно-минного отряда БФ (1913), участник Первой мировой войны. В 1915 привлекался к суду за революционную работу в Кронштадте. После Февральской революции стал членом Гельсингфорского совета депутатов армии, флота и рабочих от посыльного судна «Кречет».
Полиморфные Вектора
У вас есть другая возможность - определить ваш векторный и другие вмещающие классы через указатели на объекты некоторого класса.
Работа с базами данных в JAVA на основе соединения JDBC
Предварительная компиляция SQL-запросов по месту исполнения. Использование инструкции prepareStatement. Использование синтаксиса определения вызова для получения значения, возвращаемого процедурой или функцией. Создание инструкции на выборку по запросу.
Работа с базами данных
Факультет «Информатика и системы управления» Методические указания к лабораторной работе по курсу «Распределенные системы обработки информации»
Cold Fusion Essay Research Paper Allaire
Cold Fusion Essay, Research Paper Allaire’s ColdFusion studio and server package allows web developers to create database driven applications. ColdFusion is server side scripting that utilizes Microsoft ODBC drivers to access system databases. This allows ColdFusion to produce dynamic pages generated real time by the server.
Криминалистическое значение следов пальцев рук
Подразделение папиллярных узоров на концевых фалангах ладонной поверхности пальцев рук в зависимости от рисунка, образуемого папиллярными линиями центральной части узора. Типы и схематическая зарисовка папиллярных узоров: дуговые, петлевые, завитковые.
Биологические особенности моллюсков
Text Graphics Классы Классы Ямкохвостые (Caudofoveata) Бороздчатобрюхие (Solenogastres) Панцирные (Polyplacophora) Моноплакофоры (Monoplacophora) Двустворчатые (Bivalvia) Лопатоногие (Scaphopoda) Брюхоногие (Gastropoda) Головоногие (Cephalopoda) † Rostroconchia Graphics
Палеонтология
Палеонтология - наука о вымерших организмах. Окаменелости или фоссилии - объект палеонтологических исследований. Подразделения палеонтологии: палеозоология, палеоботаника, микропалеонтология, палеоэкология, тафономия.