Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
51
Добавлен:
16.02.2016
Размер:
7.38 Mб
Скачать

Члены класса cDatabase::m_hdbc

Указатель на подсоединенный ODBC источник данных. Пример:

Ц использование m_hdbc для прямого вызова ODBC API. // m_db является объектом CDatabase; mhdbc - это его член класса nRetcode = ::SQLGetInfo( m_db.m_hdbc, SQL_ODBC_SQL_CONFORMANCE,

&nValue, sizeof( nValue ), &cbValue );

CDatabase();

Конструктор объекта CDatabase.

virtual BOOL OpenEx (LPCTSTR IpszConnectString, DWORD dwOptions - 0); throw( CDBException, CMemoryException );

Метод подсоединяет к объекту CDatabase указанный источник данных -открывает базу данных.

При успешном завершении метод возвращает ненулевое значение. Если пользователь щелкает по кнопке Cancel в диалоге, запрашивающем допол­нительную информацию, то метод возвращает значение 0. В остальных случаях бросается исключение.

Параметры:

IpszConnectString - определяет ODBC строку подключения. Она включает источник данных и некоторую дополнительную информацию, такую, как идентификатор пользователя и пароль.

Например: "DSN=SQLServer_Source;UID=Ul;PWD=userl".

Если указать параметр ipszConnectString равным NULL, то появится стандартный диалог Data Source, дающий возможность пользователю вы- I брать доступный источник данных.

dwOptions - по умолчанию параметр равен нулю, что предполагает что база дан­ных будет открыта с разделяемым доступом и с правами записи, ODBC Cursor Library DLL не будет загружена, ODBC-диалог будет появляться только тогда, когда недостаточно информации для выполнения подключения к базе данных. Этот параметр является битовой маской, определяемой комбинацией следую­щих значений: CDatabase::openExclusive, CDatabase::openReadOnly, CDatabase::useCursorLib, CDatabase::noOdbcDialog, CDatabase::forceOdbcDialog. Пример:

II Встраивание объекта CDatabase в производный класс документа CDatabase m_dbBData(); // Подсоединение объекта CDatabase к источнику данных только на чтение m_dbBData.OpenEx( _T( "DSN=MYDATASOURCE;UID=U1"), CDatabase::openReadOnly | CDatabase::noOdbcDialog ));

virtual void CIose( );

Метод отсоединяет подключенную базу данных. Предварительно следует закрыть все наборы записей, ассоциированных с базой данных.

Все операции AddNew и Edit над наборами записей будут прерваны и выполнен откат незавершенных транзакций.

После отсоединения к объекту CDatabase можно подключать другой ис­точник данных.

const CString& GetConnect( ) const;

Метод возвращает строку подключения, использованную для подсоеди­нения к объекту CDatabase источника данных. CString GetDatabaseName( ) const;

Метод возвращает имя текущей подсоединенной базы данных. Это не одно и то же со значением DSN, указываемым для методов ОрепЕх и Open, и зависит от ODBC.

В случае возникновения ошибки метод вернет пустую строку. BOOL CanTransact() const;

Метод позволяет определить, можно ли использовать транзакции для базы данных.

void SetLoginTimeout( DWORD dwSeconds );

Метод устанавливает интервал времени, по истечении которого попытка подсоединения к источнику данных будет отменена.

По умолчанию это значение равно 15 с.

Отметим, что не все базы данных поддерживают это значение.

BOOL BeginTrans();

Метод устанавливает начало транзакции.

Транзакция может включать один или несколько вызовов методов AddNew, Edit, Delete, Update для объекта класса CRecordset.

Для завершения транзакции вызывается метод CommitTrans для подтвержде­ния всех сделанных изменений в источнике данных, или Rollback - для отмены.

Отметим, что в зависимости от ODBC-драйвера при открытии набора записей до начала транзакции могут возникнуть проблемы при попытке от­ката транзакции.

Дополнительно при начале транзакции может быть выполнена блоки­ровка используемого набора записей зависимости от драйвера ODBC. BOOL CommitTrans();

Метод выполняет завершение транзакции.

Отметим, что для набора записей поддерживается только один уровень транзакций. Вложенные транзакции использовать нельзя.

Соседние файлы в папке VC++Баженова