다음을 통해 공유


CDaoException 클래스

DAO(Data Access Objects)를 기반으로 하는 MFC 데이터베이스 클래스에서 발생하는 예외 상태를 나타냅니다.

참고 항목

DAO(데이터 액세스 개체)는 Office 2013을 통해 지원됩니다. DAO 3.6은 최종 버전이며 사용되지 않습니다.

구문

class CDaoException : public CException

멤버

공용 생성자

속성 설명
CDaoException::CDaoException CDaoException 개체를 생성합니다.

공용 메서드

이름 설명
CDaoException::GetErrorCount 데이터베이스 엔진의 Errors 컬렉션에 있는 오류 수를 반환합니다.
CDaoException::GetErrorInfo Errors 컬렉션의 특정 오류 개체에 대한 오류 정보를 반환합니다.

공용 데이터 멤버

속성 설명
CDaoException::m_nAfxDaoError MFC DAO 클래스의 모든 오류에 대한 확장된 오류 코드를 포함합니다.
CDaoException::m_pErrorInfo 하나의 DAO 오류 개체에 대한 정보를 포함하는 CDaoErrorInfo 개체에 대한 포인터입니다.
CDaoException::m_scode 오류와 연결된 SCODE 값입니다.

설명

클래스에는 예외의 원인을 확인하는 데 사용할 수 있는 공용 데이터 멤버가 포함됩니다. CDaoException 개체는 DAO 데이터베이스 클래스의 멤버 함수에 의해 생성되고 throw됩니다.

참고 항목

DAO 데이터베이스 클래스는 ODBC(Open Database Connectivity)를 기반으로 하는 MFC 데이터베이스 클래스와 다릅니다. 모든 DAO 데이터베이스 클래스 이름에는 "CDao" 접두사가 있습니다. DAO 클래스를 사용하여 ODBC 데이터 원본에 계속 액세스할 수 있습니다. 일반적으로 DAO를 기반으로 하는 MFC 클래스는 ODBC를 기반으로 하는 MFC 클래스보다 더 많은 기능을 제공합니다. DAO 기반 클래스는 자체 데이터베이스 엔진을 통해 ODBC 드라이버를 포함한 데이터에 액세스할 수 있습니다. DAO 기반 클래스는 DAO를 직접 호출하지 않고도 클래스를 통해 테이블을 추가하는 것과 같은 DDL(데이터 정의 언어) 작업도 지원합니다. ODBC 클래스에서 throw된 예외에 대한 자세한 내용은 CDBException을 참조하세요.

CATCH 식의 범위 내에서 예외 개체에 액세스할 수 있습니다. AfxThrowDaoException global 함수를 사용하여 사용자 고유의 코드에서 CDaoException 개체를 throw할 수도 있습니다.

MFC에서 모든 DAO 오류는 형식 CDaoException의 예외로 표현됩니다. 이 형식의 예외를 catch하는 경우 멤버 함수를 사용하여 CDaoException 데이터베이스 엔진의 Errors 컬렉션에 저장된 DAO 오류 개체에서 정보를 검색할 수 있습니다. 각 오류가 발생하면 하나 이상의 오류 개체가 Errors 컬렉션에 배치됩니다. (일반적으로 컬렉션에는 하나의 오류 개체만 포함됩니다. ODBC 데이터 원본을 사용하는 경우 여러 오류 개체가 발생할 가능성이 높습니다.) 다른 DAO 작업에서 오류를 생성하면 Errors 컬렉션이 지워지고 새 오류 개체가 Errors 컬렉션에 배치됩니다. 오류를 생성하지 않는 DAO 작업은 Errors 컬렉션에 영향을 주지 않습니다.

DAO 오류 코드는 DAOERR.H 파일을 참조하세요. 관련 정보는 DAO 도움말의 "트래핑 가능한 데이터 액세스 오류" 항목을 참조하세요.

일반적인 예외 처리 또는 개체에 대한 CDaoException 자세한 내용은 MFC(예외 처리)예외: 데이터베이스 예외 문서를 참조하세요. 두 번째 문서에는 DAO의 예외 처리를 보여 주는 예제 코드가 포함되어 있습니다.

상속 계층 구조

CObject

CException

CDaoException

요구 사항

머리글: afxdao.h

CDaoException::CDaoException

CDaoException 개체를 생성합니다.

CDaoException();

설명

일반적으로 프레임워크는 코드에서 예외를 throw할 때 예외 개체를 만듭니다. 예외 개체를 명시적으로 생성할 필요가 거의 없습니다. 사용자 고유의 CDaoException 코드에서 throw하려면 전역 함수 AfxThrowDaoException을 호출합니다.

그러나 MFC 클래스가 캡슐화하는 DAO 인터페이스 포인터를 통해 DAO를 직접 호출하는 경우 예외 개체를 명시적으로 만들 수 있습니다. 이 경우 DAO에서 오류 정보를 검색해야 할 수 있습니다. DAODatabases 인터페이스를 통해 DAO 메서드를 작업 영역의 Databases 컬렉션에 호출할 때 DAO에서 오류가 발생한다고 가정합니다.

DAO 오류 정보를 검색하려면
  1. 개체를 CDaoException 생성합니다.

  2. 예외 개체의 GetErrorCount 멤버 함수를 호출하여 데이터베이스 엔진의 Errors 컬렉션에 있는 오류 개체 수를 확인합니다. (일반적으로 ODBC 데이터 원본을 사용하지 않는 한 하나만 해당합니다.)

  3. 예외 개체의 GetErrorInfo 멤버 함수를 호출하여 예외 개체를 통해 컬렉션의 인덱스별로 한 번에 하나의 특정 오류 개체를 검색합니다. 예외 개체를 하나의 DAO 오류 개체에 대한 프록시로 간주합니다.

  4. m_pErrorInfo 데이터 멤버에서 반환되는 GetErrorInfo 현재 CDaoErrorInfo 구조를 검사합니다. 해당 멤버는 DAO 오류에 대한 정보를 제공합니다.

  5. ODBC 데이터 원본의 경우 필요에 따라 3단계와 4단계를 반복하여 더 많은 오류 개체를 반환합니다.

  6. 힙에서 예외 개체를 생성한 경우 완료되면 연산자를 사용하여 delete 삭제합니다.

MFC DAO 클래스의 오류 처리에 대한 자세한 내용은 예외: 데이터베이스 예외 문서를 참조하세요.

CDaoException::GetErrorCount

데이터베이스 엔진의 Errors 컬렉션에서 DAO 오류 개체 수를 검색하려면 이 멤버 함수를 호출합니다.

short GetErrorCount();

Return Value

데이터베이스 엔진의 Errors 컬렉션에 있는 DAO 오류 개체의 수입니다.

설명

이 정보는 Errors 컬렉션을 반복하여 컬렉션에 있는 하나 이상의 DAO 오류 개체를 검색하는 데 유용합니다. 인덱스 또는 DAO 오류 번호로 오류 개체를 검색하려면 GetErrorInfo 멤버 함수를 호출합니다.

참고 항목

일반적으로 Errors 컬렉션에는 오류 개체가 하나만 있습니다. 그러나 ODBC 데이터 원본으로 작업하는 경우 둘 이상이 있을 수 있습니다.

CDaoException::GetErrorInfo

Errors 컬렉션의 특정 오류 개체에 대한 오류 정보를 반환합니다.

void GetErrorInfo(int nIndex);

매개 변수

nIndex
인덱스별로 조회할 데이터베이스 엔진의 Errors 컬렉션에 있는 오류 정보의 인덱스입니다.

설명

이 멤버 함수를 호출하여 예외에 대한 다음 종류의 정보를 가져옵니다.

  • 오류 코드

  • Source

  • 설명

  • 도움말 파일

  • 도움말 컨텍스트

GetErrorInfo 는 예외 개체의 m_pErrorInfo 데이터 멤버에 정보를 저장합니다. 반환된 정보에 대한 간략한 설명은 m_pErrorInfo 참조하세요. MFC에서 throw된 형식 CDaoException 의 예외를 catch하면 멤버가 m_pErrorInfo 이미 채워집니다. DAO를 직접 호출하도록 선택한 경우 예외 개체의 GetErrorInfo 멤버 함수를 직접 호출하여 입력 m_pErrorInfo해야 합니다. 자세한 설명은 CDaoErrorInfo 구조를 참조하세요.

DAO 예외 및 예제 코드에 대한 자세한 내용은 예외: 데이터베이스 예외 문서를 참조하세요.

CDaoException::m_nAfxDaoError

MFC 확장 오류 코드를 포함합니다.

설명

이 코드는 MFC DAO 클래스의 특정 구성 요소가 오류인 경우에 제공됩니다.

가능한 값은 다음과 같습니다.

  • 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 DFX(DAO 레코드 필드 교환) 함수 호출에 사용된 주소가 없거나 유효하지 않습니다(주소를 사용하여 데이터를 바인딩하지 않음). DFX 호출에서 잘못된 주소를 전달했거나 DFX 작업 간에 주소가 잘못되었을 수 있습니다.

  • AFX_DAO_ERROR_OBJECT_NOT_OPEN 쿼리 정의 또는 열려 있지 않은 tabledef 개체를 기반으로 레코드 집합을 열려고 했습니다.

CDaoException::m_pErrorInfo

GetErrorInfoCDaoErrorInfo 호출하여 마지막으로 검색한 DAO 오류 개체에 대한 정보를 제공하는 구조체에 대한 포인터를 포함합니다.

설명

이 개체에는 다음 정보가 포함됩니다.

CDaoErrorInfo 멤버 정보 의미
m_lErrorCode 오류 코드 DAO 오류 코드
m_strSource Source 원래 오류를 생성한 개체 또는 애플리케이션의 이름입니다.
m_strDescription 설명 오류와 관련된 설명 문자열
m_strHelpFile 도움말 파일 사용자가 문제에 대한 정보를 가져올 수 있는 Windows 도움말 파일의 경로
m_lHelpContext 도움말 컨텍스트 DAO 도움말 파일의 항목에 대한 컨텍스트 ID

개체에 포함된 CDaoErrorInfo 정보에 대한 자세한 내용은 CDaoErrorInfo 구조를 참조하세요.

CDaoException::m_scode

오류를 설명하는 형식 SCODE 의 값을 포함합니다.

설명

OLE 코드입니다. 거의 모든 경우에 다른 CDaoException 데이터 멤버에서 보다 구체적인 MFC 또는 DAO 오류 정보를 사용할 수 있으므로 이 값을 사용할 필요가 거의 없습니다.

SCODE에 대한 자세한 내용은 Windows SDK의 OLE 오류 코드 구조 항목을 참조하세요. SCODE 데이터 형식은 HRESULT 데이터 형식에 매핑됩니다.

참고 항목

CException 클래스
계층 구조 차트