Класс CDATABASE
Класс CDatabase предоставляет средства подключения к источнику данных. В приложении может использоваться несколько активных объектов CDatabase.
Для использования класса CDatabase следует подключить заголовочный файл afxdb.h.
Член класса CDatabase::m_hdbc является указателем на подсоединенный ODBC источник данных. Он может использоваться как дескриптор соединения при непосредственном вызове функций ODBC.
Например:
// Использование m_hdbc для непосредственного вызова // ODBC API. // m_db – объект типа CDatabase, // m_hdbc – член класса CDatabase nRetcode = ::SQLGetInfo( m_db.m_hdbc, SQL_ODBC_SQL_CONFORMANCE, &nValue, sizeof( nValue ), &cbValue );
Класс CDatabase имеет один конструктор без параметров и набор методов, включая следующие:
-
OpenEx (LPCTSTR lpszConnectString, DWORD dwOptions = 0);throw (CDBException, CMemoryException ); - метод, выполняющий открытие базы данных. Первый параметр определяет ODBC строку подключения, описывающую источник данных, и некоторую дополнительную информацию, такую как идентификатор пользователя и пароль.
Например: "DSN=SQLServer_Source;UID=Us1;PWD=pwd1".
Второй параметр по умолчанию равен нулю, что предполагает открытие базы данных с разделяемым доступом и с правами записи, без загрузки ODBC Cursor Library DLL и без принудительного отображения диалога ODBC, определяющего информацию для подключения к базе данных. Этот параметр может быть задан как битовая маска, определяемая комбинацией следующих значений:
- CDatabase::openReadOnly – открытие источника данных только для чтения;
- CDatabase::useCursorLib – указывает загрузку библиотеки ODBC Cursor Library DLL, маскирующей некоторую функциональность ODBC-драйвера;
- CDatabase::noOdbcDialog – предотвращает появление диалога для подсоединения источника данных;
-
CDatabase::forceOdbcDialog – обеспечивает отображение диалога с целью определения информации для ODBC-соединения.
Например:
// Объявление объекта типа CDatabase CDatabase m_db1; // Объект CDatabase: открытие источника данных // "только на чтение" m_db1.OpenEx( _T( "DSN=MYDATASOURCE;UID=U1" ), CDatabase::openReadOnly | CDatabase::noOdbcDialog ) );
- Close – метод, закрывающий соединение с базой данных.
После закрытия соединения объект типа CDatabase можно использовать для открытия другого источника данных; - IsOpen – метод, определяющий, установлено ли соединение с базой данных для объекта CDatabase;
- GetConnect – метод, который возвращает строку подключения, использованную для открытия источника данных;
- GetDatabaseName – метод, возвращающий имя текущей подсоединенной базы данных (это не источник данных DSN, указываемый для методов OpenEx и Open, и зависит от ODBC);
- CanTransact – метод, позволяющий определить, можно ли использовать транзакции для базы данных;
- SetLoginTimeout – метод, устанавливающий интервал времени, по истечении которого попытка подсоединения к источнику данных будет отменена;
- BeginTrans – метод, открывающий транзакцию. Не все ODBC-драйверы поддерживают применение транзакций;
- CommitTrans – метод, выполняющий завершение транзакции;
- Rollback – метод, выполняющий откат транзакции;
ExecuteSQL – метод, выполняющий SQL-оператор без возвращения результирующего набора.
Например:
CString strCmd = "UPDATE TBL1 SET F1 = 124"; TRY { m_db1.ExecuteSQL( strCmd );} CATCH(CDBException, e) { // Код ошибки в e->m_nRetCode } END_CATCH