Поделиться через


Класс CDaoException

Представляет условие исключения, поступающее от классов базы данных MFC на базе объектов доступа к данным (DAO). Версия DAO 3.6 является окончательной и считается устаревшей.

Синтаксис

class CDaoException : public CException

Участники

Открытые конструкторы

Имя Описание
CDaoException::CDaoException Формирует объект CDaoException.

Открытые методы

Имя Описание
CDaoException::GetErrorCount Возвращает количество ошибок в коллекции ошибок ядра СУБД.
CDaoException::GetErrorInfo Возвращает сведения об ошибке определенного объекта ошибки в коллекции Errors.

Открытые члены данных

Имя Описание
CDaoException::m_nAfxDaoError Содержит расширенный код ошибки для любых ошибок в классах DAO MFC.
CDaoException::m_pErrorInfo Указатель на объект CDaoErrorInfo , содержащий сведения об одном объекте ошибки DAO.
CDaoException::m_scode Значение SCODE , связанное с ошибкой.

Замечания

Класс включает общедоступные элементы данных, которые можно использовать для определения причины исключения. CDaoException объекты создаются и создаются функциями-членами классов баз данных DAO.

Примечание.

Классы базы данных DAO отличаются от классов баз данных MFC на основе Подключение тивности открытой базы данных (ODBC). Все имена классов базы данных DAO имеют префикс CDao. Вы по-прежнему можете получить доступ к источникам данных ODBC с помощью классов DAO. Как правило, классы MFC на основе DAO более способны, чем классы MFC на основе ODBC; Классы на основе DAO могут получать доступ к данным, включая драйверы ODBC, через собственный ядро СУБД. Классы на основе DAO также поддерживают операции языка определения данных (DDL), такие как добавление таблиц через классы, без вызова DAO напрямую. Сведения об исключениях, создаваемых классами ODBC, см. в разделе CDBException.

Доступ к объектам исключений можно получить в область выражения CATCH. Вы также можете создавать CDaoException объекты из собственного кода с помощью глобальной функции AfxThrowDaoException .

В MFC все ошибки DAO выражаются в виде исключений типа CDaoException. При перехвате исключения этого типа можно использовать CDaoException функции-члены для получения сведений из любых объектов ошибок DAO, хранящихся в коллекции ошибок ядра СУБД. По мере возникновения каждой ошибки один или несколько объектов ошибок помещаются в коллекцию ошибок. (Обычно коллекция содержит только один объект ошибки; если используется источник данных ODBC, скорее всего, вы получите несколько объектов ошибок.) Когда другая операция DAO создает ошибку, коллекция ошибок очищается, а новый объект ошибки помещается в коллекцию ошибок. Операции DAO, которые не создают ошибку, не влияют на коллекцию ошибок.

Коды ошибок DAO см. в файле DAOERR.H. Дополнительные сведения см. в разделе "Ошибки доступа к данным в ловушке" в справке DAO.

Дополнительные сведения об обработке исключений в целом или CDaoException об объектах см. в статьях об обработке исключений (MFC) и исключениях: исключения базы данных. Вторая статья содержит пример кода, иллюстрирующий обработку исключений в DAO.

Иерархия наследования

CObject

Cexception

CDaoException

Требования

Header: afxdao.h

CDaoException::CDaoException

Формирует объект CDaoException.

CDaoException();

Замечания

Как правило, платформа создает объекты исключений, когда его код создает исключение. Редко требуется создать объект исключения явным образом. Если вы хотите создать исключение CDaoException из собственного кода, вызовите глобальную функцию AfxThrowDaoException.

Однако может потребоваться явно создать объект исключения, если вы выполняете прямые вызовы DAO с помощью указателей интерфейса DAO, которые инкапсулируют классы MFC. В этом случае может потребоваться получить сведения об ошибке из DAO. Предположим, что ошибка возникает в DAO при вызове метода DAO через интерфейс DAODatabases в коллекцию баз данных рабочей области.

Получение сведений об ошибке DAO
  1. CDaoException Создание объекта.

  2. Вызовите функцию элемента GetErrorCount объекта исключения, чтобы определить, сколько объектов ошибок находятся в коллекции ошибок ядра СУБД. (Обычно только один, если вы не используете источник данных ODBC.)

  3. Вызовите функцию-член объекта исключения GetErrorInfo, чтобы получить один конкретный объект ошибки за раз по индексу в коллекции через объект исключения. Подумайте об объекте исключения в качестве прокси-сервера для одного объекта ошибки DAO.

  4. Изучите текущую структуру CDaoErrorInfoGetErrorInfo, которая возвращает элемент данных m_pErrorInfo . Его члены предоставляют сведения об ошибке DAO.

  5. В случае источника данных ODBC повторите шаги 3 и 4 при необходимости для получения дополнительных объектов ошибок.

  6. Если вы создали объект исключения в куче, удалите его с оператором delete после завершения.

Дополнительные сведения об обработке ошибок в классах DAO MFC см. в статье "Исключения баз данных".

CDaoException::GetErrorCount

Вызовите эту функцию-член, чтобы получить количество объектов ошибок DAO в коллекции ошибок ядра СУБД.

short GetErrorCount();

Возвращаемое значение

Количество объектов ошибок DAO в коллекции ошибок ядра СУБД.

Замечания

Эта информация полезна для цикла по коллекции ошибок для получения каждого из одного или нескольких объектов ошибок DAO в коллекции. Чтобы получить объект ошибки по индексу или номеру ошибки DAO, вызовите функцию-член GetErrorInfo .

Примечание.

Обычно в коллекции Errors существует только один объект ошибки. Однако при работе с источником данных ODBC может быть несколько.

CDaoException::GetErrorInfo

Возвращает сведения об ошибке определенного объекта ошибки в коллекции Errors.

void GetErrorInfo(int nIndex);

Параметры

Nindex
Индекс сведений об ошибках в коллекции ошибок ядра СУБД для поиска по индексу.

Замечания

Вызовите эту функцию-член, чтобы получить следующие типы сведений об исключении:

  • Код ошибки

  • Оригинал

  • Description

  • Файл справки

  • Контекст справки

GetErrorInfo хранит сведения в элементе данных объекта m_pErrorInfo исключения. Краткое описание возвращаемых сведений см. в m_pErrorInfo. Если вы поймаете исключение типа CDaoException , созданного MFC, m_pErrorInfo элемент уже будет заполнен. Если вы решили вызвать DAO напрямую, необходимо самостоятельно m_pErrorInfoвызвать функцию-член объекта GetErrorInfo исключения. Более подробное описание см. в структуре CDaoErrorInfo .

Сведения об исключениях DAO и примере кода см. в статье "Исключения базы данных".

CDaoException::m_nAfxDaoError

Содержит расширенный код ошибки MFC.

Замечания

Этот код предоставляется в случаях, когда определенный компонент классов DAO MFC имеет исправление.

Возможны следующие значения:

  • NO_AFX_DAO_ERROR Последняя операция не привела к расширенной ошибке MFC. Однако операция может привести к другим ошибкам из DAO или OLE, поэтому следует проверка m_pErrorInfo и, возможно, m_scode.

  • AFX_DAO_ERROR_ENGINE_INITIALIZATION MFC не удалось инициализировать ядро СУБД Microsoft Jet. OLE, возможно, не удалось инициализировать или невозможно создать экземпляр объекта ядра СУБД DAO. Эти проблемы обычно предполагают плохую установку DAO или OLE.

  • AFX_DAO_ERROR_DFX_BIND Адрес, используемый в вызове функции обмена полями записей DAO (DFX), не существует или недопустим (адрес не использовался для привязки данных). Возможно, вы передали неправильный адрес в вызове DFX или адрес может стать недопустимым между операциями DFX.

  • AFX_DAO_ERROR_OBJECT_NOT_OPEN Вы попытались открыть набор записей на основе запроса или объекта табличного элемента, который не был в открытом состоянии.

CDaoException::m_pErrorInfo

Содержит указатель на CDaoErrorInfo структуру, которая предоставляет сведения об объекте ошибки DAO, который вы последний раз извлекли путем вызова GetErrorInfo.

Замечания

Этот объект содержит следующие сведения:

Член CDaoErrorInfo Информация Значение
m_lErrorCode Код ошибки Код ошибки DAO
m_strSource Оригинал Имя объекта или приложения, которое первоначально вызвало ошибку
m_strDescription Description Описательная строка, связанная с ошибкой
m_strHelpFile Файл справки Путь к файлу справки Windows, в котором пользователь может получить сведения о проблеме
m_lHelpContext Контекст справки Идентификатор контекста раздела в файле справки DAO

Полные сведения о сведениях, содержащихся в объекте CDaoErrorInfo , см . в структуре CDaoErrorInfo .

CDaoException::m_scode

Содержит значение типа SCODE , описывающего ошибку.

Замечания

Это код OLE. Этот параметр редко требуется использовать, так как в большинстве случаев более конкретные сведения об ошибке MFC или DAO доступны в других CDaoException элементах данных.

Дополнительные сведения о SCODE см. в разделе "Структура кодов ошибок OLE" в пакете SDK для Windows. Тип данных SCODE сопоставляется с типом данных HRESULT.

См. также

Класс CException
Диаграмма иерархии
Класс CException