Статья: Простые 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"
--> ЧИТАТЬ ПОЛНОСТЬЮ <--