Класс Кдбексцептион
Представляет условие исключения, поступающее от классов базы данных.
Синтаксис
Члены
Открытые члены данных
| Имя | Описание |
|---|---|
| Кдбексцептион:: m_nRetCode | Содержит код возврата ODBC, имеющий тип РЕТКОДЕ. |
| Кдбексцептион:: m_strError | Содержит строку, описывающую ошибку в буквенно-цифровых терминах. |
| Кдбексцептион:: m_strStateNativeOrigin | Содержит строку, описывающую ошибку в терминах кодов ошибок, возвращаемых ODBC. |
Комментарии
Класс включает два общедоступных члена данных, которые можно использовать для определения причины исключения или для вывода текстового сообщения с описанием исключения. CDBException объекты создаются и создаются функциями членов классов базы данных.
Этот класс является одним из классов ODBC. Если вместо этого используются более новые классы объектов доступа к данным (DAO), используйте вместо него кдаоексцептион . Все имена классов DAO имеют «Кдао» в качестве префикса. Дополнительные сведения см. в статье Общие сведения о программировании баз данных.
Исключения — это случаи аномального выполнения, включающие условия, которые выходят за пределы контроля программы, например источник данных или ошибки ввода-вывода в сети. Ошибки, которые могут ожидаться в обычном процессе выполнения программы, обычно не считаются исключениями.
Доступ к этим объектам можно получить в области выражения catch . Кроме того, можно создавать CDBException объекты из собственного кода с помощью AfxThrowDBException глобальной функции.
Дополнительные сведения об обработке исключений в целом и об CDBException объектах см. в статьях обработка исключений (MFC) и исключения: исключения базы данных.
Иерархия наследования
Требования
Заголовок: афксдб. h
Кдбексцептион:: m_nRetCode
Содержит код ошибки ODBC типа РЕТКОДЕ, возвращаемый функцией интерфейса прикладного программирования (API) ODBC.
Комментарии
этот тип включает SQL с префиксами, определенными в ODBC, и AFX_SQL с префиксами, определенными классами базы данных. CDBException Для этот элемент будет содержать одно из следующих значений:
AFX_SQL_ERROR_API_CONFORMANCE драйвер для CDatabase::OpenEx вызова или CDatabase::Open не соответствует требуемому уровню соответствия API ODBC 1 (SQL_OAC_LEVEL1).
Не удалось подключиться к источнику данных AFX_SQL_ERROR_CONNECT_FAIL. Вы передали указатель NULL CDatabase конструктору набора записей и последующая попытка создать соединение на основе GetDefaultConnect сбоя.
AFX_SQL_ERROR_DATA_TRUNCATED вы запросили больше данных, чем вы указали в хранилище. Дополнительные сведения о увеличении указанного хранилища данных для CString типов данных или CByteArray см. в описании nMaxLength аргумента для RFX_Text и RFX_Binary в разделе «макросы и глобальные параметры».
AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED вызов CRecordset::Open запроса динамического подмножества окончился неудачей. Драйвер не поддерживает динамические подмножества данных.
AFX_SQL_ERROR_EMPTY_COLUMN_LIST попытке открыть таблицу (или то, что вы указали в качестве вызова процедуры или инструкции SELECT ), но в переопределении не указаны столбцы, указанные в вызовах DoFieldExchange функций обмена ПОЛЯМИ записи (RFX).
AFX_SQL_ERROR_FIELD_SCHEMA_MISMATCH тип функции RFX в DoFieldExchange переопределении несовместим с типом данных столбца в наборе записей.
AFX_SQL_ERROR_ILLEGAL_MODE вызывается CRecordset::Update без ранее вызова метода CRecordset::AddNew или CRecordset::Edit .
AFX_SQL_ERROR_LOCK_MODE_NOT_SUPPORTED запрос на блокировку записей для обновления не может быть выполнен, так как драйвер ODBC не поддерживает блокировку.
AFX_SQL_ERROR_MULTIPLE_ROWS_AFFECTED вызывается CRecordset::Update или Delete для таблицы без уникального ключа и изменения нескольких записей.
AFX_SQL_ERROR_NO_CURRENT_RECORD попытке изменить или удалить ранее удаленную запись. После удаления необходимо перейти к новой текущей записи.
AFX_SQL_ERROR_NO_POSITIONED_UPDATES не удалось выполнить запрос динамического подмножества, так как драйвер ODBC не поддерживает позиционированные обновления.
AFX_SQL_ERROR_NO_ROWS_AFFECTED вы вызвали CRecordset::Update или Delete , но при начале операции не удается найти запись.
AFX_SQL_ERROR_ODBC_LOAD_FAILED попытке загрузить ODBC.DLL не удалось; Windows не удалось найти или загрузить эту библиотеку DLL. Эта ошибка является неустранимой.
AFX_SQL_ERROR_ODBC_V2_REQUIRED не удалось выполнить запрос динамического подмножества, так как требуется драйвер ODBC, соответствующий уровню 2.
AFX_SQL_ERROR_RECORDSET_FORWARD_ONLY попытке прокрутки не удалась, так как источник данных не поддерживает обратную прокрутку.
Не удалось AFX_SQL_ERROR_SNAPSHOT_NOT_SUPPORTED вызов запроса на CRecordset::Open Создание моментального снимка. Этот драйвер не поддерживает моментальные снимки. (Это происходит только в том случае, если отсутствует библиотека курсоров ODBC ODBCCURS.DLL.)
AFX_SQL_ERROR_SQL_CONFORMANCE драйвер для CDatabase::OpenEx вызова или CDatabase::Open не соответствует требуемому уровню совместимости ODBC SQL «Minimum» (SQL_OSC_MINIMUM).
AFX_SQL_ERROR_SQL_NO_TOTAL драйверу ODBC не удалось указать общий размер CLongBinary значения данных. Возможно, произошел сбой операции, так как не удалось предварительно выделить глобальный блок памяти.
AFX_SQL_ERROR_RECORDSET_READONLY попытке обновить набор записей, предназначенный только для чтения, или источник данных доступен только для чтения. Операции обновления не могут быть выполнены с набором записей или CDatabase объектом, с которым он связан.
Сбой функции SQL_ERROR. Сообщение об ошибке, возвращаемое функцией SQLError ODBC, сохраняется в m_strError элементе данных.
Сбой функции SQL_INVALID_HANDLE из-за недопустимого обработчика среды, маркера соединения или маркера оператора. Это указывает на ошибку программирования. Дополнительные сведения из функции SQLError ODBC недоступны.
коды с префиксом SQL определяются ODBC. Коды с префиксом AFX определены в АФКСДБ. H, найдено в МФК\ИНКЛУДЕ.
Кдбексцептион:: m_strError
Содержит строку, описывающую ошибку, вызвавшую исключение.
Комментарии
Строка описывает ошибку в буквенно-цифровых терминах. Более подробные сведения и пример см. в разделе m_strStateNativeOrigin .
Кдбексцептион:: m_strStateNativeOrigin
Содержит строку, описывающую ошибку, вызвавшую исключение.
Комментарии
Строка имеет вид «состояние:% s, native:% LD, источник:% s», где коды формата заменяются значениями, описывающими:
SQLSTATE — строка, завершающаяся нулем, содержащая код ошибки из пяти символов, возвращенный в параметре сзсклстате функции SQLError ODBC. Значения SQLSTATE перечислены в разделе приложение а, коды ошибок ODBCв справочнике программиста по ODBC. Пример: «S0022».
Собственный код ошибки, относящийся к источнику данных, возвращаемый в параметре SQLError пфнативиррор функции. Пример: 207.
Текст сообщения об ошибке, возвращаемый в параметре SQLError сзеррормсг функции. Это сообщение состоит из нескольких имен в квадратных скобках. Так как ошибка передается из источника пользователю, каждый компонент ODBC (источник данных, драйвер, диспетчер драйверов) добавляет свое собственное имя. Эти сведения помогают определить происхождение ошибки. пример: [Microsoft] [драйвер ODBC SQL Server] [SQL Server]
Платформа интерпретирует строку ошибки и помещает ее компоненты в m_strStateNativeOrigin ; Если m_strStateNativeOrigin содержит сведения о более чем одной ошибке, ошибки разделяются символами новой строки. Платформа помещает буквенно-цифровой текст ошибки в m_strError .
Дополнительные сведения о кодах, используемых для создания этой строки, см. в описании функции SqlError в справочнике программиста по ODBC.
Пример
из ODBC: «состояние: S0022, Native: 207, источник: [Microsoft] [драйвер ODBC SQL Server] [SQL Server] недопустимое имя столбца» ColName «»
в m_strStateNativeOrigin : «состояние: S0022, Native: 207, источник: [Microsoft] [драйвер ODBC SQL Server] [SQL Server]»