пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Основные методы класса CDatabase.

 

Класс Cdatabase

Объекты этого класса используются для соединения с базами данных, посредством  которого можно манипулировать источником данных. Чтобы у вас сразу же сложилось представление о заложенных в этот класс возможностях,  приведут  список  категорий, на которые можно условно разделить все его компоненты и методы:

  • Данные. Эти компоненты класса CDatabase хранят информацию, используемую в том случае, когда вы хотите работать непосредственно с базой данных, к которой присоединен объект CDatabase.
  • Создание соединения. В эту категорию входят конструктор и методы для открытия/закрытия базы данных.
  • Атрибуты данных. Сюда отн-ся десять ф-ий, используемых  для пол-ия инфо- о базе данных, к которой присоединен объектов CDatabase.
  • Операции — пять функций, позволяющих обрабатывать транзакции и не-посредственно выполнять команды SQL
  • Переопределяемые методы. Один метод, позволяющий программисту более конкретно настроить функционирование объекта CDatabase.

Создание соединения

 

CDatabase::CDatabase   зн

Служит для создания объекта CDatabase:

Class cPublDoc: public CDocument

зн public:     // Объявляем объект  CDatabase в документе

CDatabase m_dbPubl;    ...    зн;

 

После того как объект создан, необходимо установить соединение с определенным источником данных, для чего следует вызвать одну из приведенных ниже функций.

 

virtual BOOL CDatabase::Оpen   (

   LPCTSTR  lpszDSN,

   BOOL bExclusive =  FALSE,

   BOOL bReadOnly = FALSE,

   LPCTSTR lpszConnect = "ODBC;",

   BOOL bUseCursorLib = TRUE)

 

Параметр lpszDSN определяет имя источника данных, которое должно быть зарегистрировано с помощью программы ODBC Administrator. Это значение должно быть равно NULL, если DSN (Data Source Name, Имя источника данных) определено в строке lpszConnect, или может быть равно NULL, если необходимо  предоставить пользователю блок диалога для выбора источника данных.

Параметр bExclusive (в Visual С++ 5.0 не поддерживается): источник данных всегда открывается для совместного использования, и значение параметра должно  быть равно FALSE, в противном случае будет выдано сообщение об ошибке.

Параметр bReadOnly позволяет установить соединение с источником данных в режиме "только для чтения" (TRUE), что приводит к запрещению его обновления. После установления такого соединения все зависимые результирующие  множества наследуют этот атрибут.

Параметр lpszConnect определяет строку,  описывающую соединение, которая содержит информацию об источнике данных, идентификаторе пользователя, имеющего к нему доступ, пароль, если он  тре-я ист-ку данных, и другую информацию. Для совместимости с будущими версиями требуется, чтобы эта строка начиналась с подстроки "ODBC",  указ-щей на то, что соединение устан-вается с источником данных  ODBC.

Параметр bUseCursorLib указывает на необходимость (TRUE) или необязательность загрузки динамической библиотеки ODBC Cursor Library, позволяющей работать с курсорами базы данных.

Упрощенная версия рассмотренной функции имеет вид:

 

virtual BOOL CDatabase::OpenEx   (

    LPCTSTR lpszConnectString,

    DWORD dwOptions = 0)

 

Параметр lpszConnectString определяет строку соединения с источником данных ODBC, которая включает его имя, а также дополнительную необязательную информацию, такую как идентификатор и пароль пользователя, например,

 

"DSN=Publisher;UID=sa;PWD=irishka".

 

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

CDatabase::openExclusive В Visual C++ до версии 6.0 не поддерживается источник данных всегда открывается для совместного использования. При задании этой опции будет выдано сообщение об ошибке.

CDatabase::openReadOnly       Источник данных открывается в режиме “только для чтения”

СDatabase::openUseCursorLib Указывает на необходимость загрузки  динамической  библиотеки ODBC Cursor Library, позволяющей работать с курсорами

CDatabase::noOdbcDialog        Не выводить блок диалога

CDatabase::forceOdbcDialog    Всегда выводить блок диалога соединения

Значение, заданное по умолчанию (0), означает, что база данных открывается для совместного использования, с доступом для записи, динамическая библиотека поддержки курсора не загружается и блок диалога для выбора источника  данных отображается только в том случае, если не указана дополнительная информация о соединении.

Как видите, обе функции выполняют одну и туже задачу – установить соединение с источником данных. Разница заключается  только в способе задания параметров.

Примеры.

Cdatabase m_dbSamp; // Создаем объект класса Cdatabase

// Открываем соединение с источником данных, указав имя источника и идентификатор //пользователя (без пароля)

m_dbsamp.Open(_T(»Samples»), FALSE, FALSE, _T(«ODBC;UID=sa»));

//или запрашиваем всю информацию у пользователя

m_dbsamp.Open(NULL);

 

Закрытие соединения

 

//Закрываем текущее

m_dbsamp.Close();

// … и открываем новое

m_dbPubl.OpenEx (_T(“DSN=Authors; UID=sa”), CDatabase::openReadOnly|

CDatabase::noOdbcDialog));

 

Атрибуты данных

Входящие в эту категорию функции используются для предоставления ин-формации о соединении, драйвере и источнике данных, а также для установки некоторых опций источника данных. Наиболее часто они применяются в интерфейсных приложениях. Рассмотрим основные из них.

 

const CString&  CDatabase: :GetConnect()

 

Вызов этой функции позволяет получить описывающую соединение строку, которая использовалась во время вызова функций открытия соединения (Open или OpenEx). Если до момента вызова этой функции соединение не было установлено, то возвращается ссылка на пустую строку.

 

BOOL CDatabase::IsOpen   ()

Позволяет определить, имеется ли (возвращается ненулевое значение) или нет (0) текущее соединение объекта CDatabase с источником данных.

 

BOOL CDatabase: :CanUpdate   ()

 

Устанавливает, может ли пользователь обновлять базу данных. Сама возможность обновления определяется двумя факторами — возможностями драйвера   ODBC (не все драйверы предоставляют возможность обновления) и режимом, в котором была открыта база данных. Если такая возможность есть, то функция  возвращает ненулевое значение, а в противном случае 0. Фактор, влияющий на  возможность обновления, можно задать, вызвав функцию ::SQLGetlnfo с парамeтpoм SQL_DATASOURCE_READ_ONLY.

ОПЕРАЦИИ

Функции этой категории используются для непосредственной работы с базой данных. К ним относятся функции обработки транзакций (используемые для обновления базы данных) и непосредственного выполнения команд SQL: void CDatabase::ExecuteSQL (LPCSTR lpszSQL)

Позволяет непосредственно выполнить команду SQL, задаваемую в завершающейся нулем строке, на которую указывает параметр lpszSQL. В качестве параметра можно использовать объект класса CString. Следует иметь в виду, что выполнение этой функции не возвращает записей из базы данных и, следовательно, не рекомендуется для выполнения операций выборки:

 

CString  strCmd =  "UPDATE Products  SET UnitPrice = 30";

  try

  зн       m_dbCust.ExecuteSQL(strCmd) ;     зн

 catch (CDBException, e)

   зн           // Код ошибки находится в e->m_nRetCode     зн

 


18.01.2020; 22:36
хиты: 56
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь