데이터베이스, 레코드 집합 및 레코드 보기 클래스가 함께 작동하는 방식을 더 잘 이해하려면 AppWizard를 사용하여 데이터베이스 응용 프로그램을 만듭니다. 단원 1의 ODBC 데이터 원본을 사용하여 SQL Server 샘플 데이터베이스 pubs에서 데이터를 검색하고 업데이트하는 양식 기반 응용 프로그램을 만듭니다. ODBC 클래스는 다음 예제 에서 사용되지만 보여 지는 기술은 DAO 클래스를 기반으로 하는 프로젝트에 쉽게 적용할 수 있습니다. MFC의 DAO 래핑은 많은 세부 사항을 처리하여 DAO를 더 쉽게 사용할 수 있으므로 사소한 것에 대해 걱정할 필요가 없습니다. 여기에는 OLE의 초기화, DAO 개체(특히 컬렉션 개체)의 생성 및 관리, 오류 검사 및 강력한 형식의 간단한 인터페이스(VARIANT 또는 BSTR 인수 없음)가 포함됩니다. 직접 DAO 통화를 하고 이러한 기능을 계속 활용할 수 있습니다. 코드는 직접 DAO 호출에 의해 생성된 모든 개체에 대해 Release를 호출하고 MFC가 내부적으로 사용할 수 있는 인터페이스 포인터를 수정하지 않는 모든 작업을 수행해야 합니다. 예를 들어 열려 있는 CDaoRecordset 개체의 m_pDAORecordset 멤버를 수정하지 마십시오. 그러나 m_pDAORecordset 인터페이스를 사용하여 DAO를 직접 호출하여 필드 컬렉션을 얻을 수 있습니다. 이 경우 m_pDAORecordset 멤버는 수정되지 않습니다. 개체를 완료하면 필드 컬렉션 개체에서 릴리스를 호출하기만 하면 됩니다.

인라인 주석 외에 설명이 없으며 대부분의 예제에서 오류 처리가 없습니다. 기본 DAO 컬렉션 개체를 새로 고쳐야 하는 경우 상황이 발생할 수 있습니다. 일반적으로 이것은 필요하지 않지만 필요한 경우 간단한 절차입니다. 컬렉션을 새로 고쳐야 하는 경우의 예로는 여러 사용자가 새 tabledefs를 만드는 다중 사용자 환경에서 작업하는 경우입니다. 이 경우 tabledefs 컬렉션이 부실해질 수 있습니다. 컬렉션을 새로 고치려면 특정 컬렉션 개체의 Refresh 메서드를 호출하고 오류를 확인하면 데이터베이스 개체와 함께 레코드 집합 개체가 만들어집니다. ODBC 클래스를 사용하는 다음 예제와 같이 기존 데이터베이스 개체의 주소를 레코드 집합 생성자로 전달해야 합니다. 마이크로 소프트 제트 데이터베이스 엔진. 예를 들어 CDaoTableDef 개체의 컬렉션을 CDaoDatabase 개체와 연결할 수 있습니다. Jet 호환 데이터베이스 파일 내에서 테이블을 만들고 수정하는 데 사용할 수 있는 테이블 정의 개체입니다.

CDatabase::Open() 및 CRecordset::Open() 함수는 오류가 발생할 경우 CDBException을 throw합니다. CDaoDatabase::Open() 및 CDaoRecordset::Open() 함수는 CDaoException을 throw합니다. 데이터베이스 예외를 처리하는 방법의 예는 이 단원의 후반부에서 다 수 있습니다. 레코드 집합 개체를 만든 후에는 Open() 멤버 함수를 호출하여 쿼리를 제출하고 쿼리에서 반환된 레코드로 레코드 집합을 채웁니다. 다음 코드는 이전 예제에서 만든 CRecordset 개체에 대해 Open() 함수를 호출하는 방법을 보여 주며, 예를 들어 bool 형식의 True 및 False 논리 값은 _variant_t 유형으로 변환됩니다. 데이터베이스와 같은 리소스는 고장의 위험이 높습니다.

Scroll Up