Класс CDaoException
Представляет условие исключения, поступающее от классов базы данных MFC на базе объектов доступа к данным (DAO).
Примечание.
Объект доступа к данным (DAO) поддерживается через Office 2013. 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 на основе open Database Connectivity (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.
Иерархия наследования
CDaoException
Требования
Заголовок: afxdao.h
CDaoException::CDaoException
Формирует объект CDaoException
.
CDaoException();
Замечания
Как правило, платформа создает объекты исключений, когда его код создает исключение. Редко требуется создать объект исключения явным образом. Если вы хотите создать исключение CDaoException
из собственного кода, вызовите глобальную функцию AfxThrowDaoException.
Однако может потребоваться явно создать объект исключения, если вы выполняете прямые вызовы к DAO с помощью указателей интерфейса DAO, которые инкапсулируют классы MFC. В этом случае может потребоваться получить сведения об ошибке из DAO. Предположим, что ошибка возникает в DAO при вызове метода DAO через интерфейс DAODatabases в коллекцию баз данных рабочей области.
Получение сведений об ошибке DAO
CDaoException
Создание объекта.Вызовите функцию элемента GetErrorCount объекта исключения, чтобы определить, сколько объектов ошибок находятся в коллекции ошибок ядра СУБД. (Обычно только один, если вы не используете источник данных ODBC.)
Вызовите функцию-член объекта исключения GetErrorInfo, чтобы получить один конкретный объект ошибки за раз по индексу в коллекции через объект исключения. Подумайте об объекте исключения в качестве прокси-сервера для одного объекта ошибки DAO.
Изучите текущую структуру CDaoErrorInfo
GetErrorInfo
, которая возвращает элемент данных m_pErrorInfo . Его члены предоставляют сведения об ошибке DAO.В случае источника данных ODBC повторите шаги 3 и 4 при необходимости для получения дополнительных объектов ошибок.
Если вы создали объект исключения в куче, удалите его с оператором
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.