Страница 3 из 17
Информация о соединении Сразу после установки соединения есть возможность проверить его работоспособность, и получить ряд параметров соединения. Вероятно в первую очередь вы заинтересуетесь правильностью открытия и установки соединения. Эта возможность реализована в функции IsOpen. Эта функция возвращает значение отличное от нуля, если связь установлена. // BOOL IsOpen( ) const; //...... CDatabase cdbMyDB; cdbMyDB.Open("MS Access 97 Database"); if (cdbMyDB.IsOpen()) { //...... } //...... При установки связи в прошлый раз мы с Вами передавали строку соединения, но использовали часть параметров. Функция GetConnect() возвращает строку CString, в которой перечислены все параметры используемые при установке соединения. // const CString& GetConnect(); if (cdbMyDB.IsOpen()) { AfxMessageBox(cdbMyDB.GetConnect()); }
У меня появляется вот такая строка. Чать параметров в строке соединения я не упоминал, а они присутсвуют так как заданы по умолчанию. И если Вы хотите посмотреть парамтры соединения с конкретным сервером, то используйте этот код для получения информации. Теперь получим имя базы данных, с которой мы установили соединение. // CString GetDatabaseName(); cdbMyDB.Open("MS Access 97 Database"); if (cdbMyDB.IsOpen()) { AfxMessageBox(cdbMyDB.GetDatabaseName()); }
Сейчас Вы должны возмутиться. Как так, зачем нам знать имя, мы же его задаем. А вот нет. Мы задаем универсальное имя, псевдоним по которому не известно, что и где раположенно. А вот именно эта функция позволяет нам на основе псевдонима узнать настоящее лицо - т.е. где и какая конкретно база данных открыта. Проверим можно ли вносить в базу данных изменения. То есть убедимся, что открыли в режиме отличном от Read Only. Для этого воспользуемся функцией CanUpdate. // BOOL CanUpdate(); cdbMyDB.Open("MS Access 97 Database"); if (cdbMyDB.IsOpen()) { if (cdbMyDB.CanUpdate()) AfxMessageBox("Update Yes"); }
И проверим возможность использования транзакций используя функцию CanTransact(). Не все драйвера ODBC имеют данную возможность. // BOOL CanTransact(); if (cdbMyDB.IsOpen()) { if (cdbMyDB.CanTransact()) AfxMessageBox("Transact Yes"); } |