Московский государственный университет имени М.В.Ломоносова
Опубликован: 20.12.2005 | Доступ: свободный | Студентов: 3141 / 371 | Оценка: 4.22 / 3.86 | Длительность: 12:03:00
ISBN: 978-5-9556-0068-0
Лекция 10:

Реализация доступа к базам данных в среде VISUAL STUDIO.NET на языке С++ с применением MFC

< Лекция 9 || Лекция 10: 12345 || Лекция 11 >

Классы для работы с базами данных

Класс 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
< Лекция 9 || Лекция 10: 12345 || Лекция 11 >