Статья: Простые ODBC классы без использования MFC
Класс 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. Надеюсь, они Вам понравятся :).