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의 예외 처리를 보여 주는 예제 코드가 포함되어 있습니다.
상속 계층 구조
CDaoException
요구 사항
머리글: afxdao.h
CDaoException::CDaoException
CDaoException
개체를 생성합니다.
CDaoException();
설명
일반적으로 프레임워크는 코드에서 예외를 throw할 때 예외 개체를 만듭니다. 예외 개체를 명시적으로 생성할 필요가 거의 없습니다. 사용자 고유의 CDaoException
코드에서 throw하려면 전역 함수 AfxThrowDaoException을 호출합니다.
그러나 MFC 클래스가 캡슐화하는 DAO 인터페이스 포인터를 통해 DAO를 직접 호출하는 경우 예외 개체를 명시적으로 만들 수 있습니다. 이 경우 DAO에서 오류 정보를 검색해야 할 수 있습니다. DAODatabases 인터페이스를 통해 DAO 메서드를 작업 영역의 Databases 컬렉션에 호출할 때 DAO에서 오류가 발생한다고 가정합니다.
DAO 오류 정보를 검색하려면
개체를
CDaoException
생성합니다.예외 개체의 GetErrorCount 멤버 함수를 호출하여 데이터베이스 엔진의 Errors 컬렉션에 있는 오류 개체 수를 확인합니다. (일반적으로 ODBC 데이터 원본을 사용하지 않는 한 하나만 해당합니다.)
예외 개체의 GetErrorInfo 멤버 함수를 호출하여 예외 개체를 통해 컬렉션의 인덱스별로 한 번에 하나의 특정 오류 개체를 검색합니다. 예외 개체를 하나의 DAO 오류 개체에 대한 프록시로 간주합니다.
m_pErrorInfo 데이터 멤버에서 반환되는
GetErrorInfo
현재 CDaoErrorInfo 구조를 검사합니다. 해당 멤버는 DAO 오류에 대한 정보를 제공합니다.ODBC 데이터 원본의 경우 필요에 따라 3단계와 4단계를 반복하여 더 많은 오류 개체를 반환합니다.
힙에서 예외 개체를 생성한 경우 완료되면 연산자를 사용하여
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
GetErrorInfo를 CDaoErrorInfo
호출하여 마지막으로 검색한 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 데이터 형식에 매핑됩니다.