다음을 통해 공유


MFC: 문서 및 뷰를 이용한 데이터베이스 클래스 사용

문서/뷰 아키텍처를 사용하거나 사용하지 않고 MFC 데이터베이스 클래스를 사용할 수 있습니다. 이 항목에서는 문서 및 뷰 작업을 강조합니다. 다음을 설명합니다.

대안은 MFC: 문서 및 뷰가 없는 데이터베이스 클래스를 사용하는 것을 참조 하세요.

양식 기반 애플리케이션 작성

많은 데이터 액세스 애플리케이션은 양식을 기반으로 합니다. 사용자 인터페이스는 사용자가 데이터를 검사, 입력 또는 편집하는 컨트롤을 포함하는 양식입니다. 애플리케이션 양식을 기반으로 하려면 클래스 CRecordView를 사용합니다. MFC 애플리케이션 마법사를 실행하고 데이터베이스 지원 페이지에서 ODBC 클라이언트 유형을 선택하면 프로젝트에서 뷰 클래스에 사용합니다CRecordView.

양식 기반 애플리케이션에서 각 레코드 뷰 개체는 개체에 대한 포인터를 CRecordset 저장합니다. 프레임워크의 RFX(레코드 필드 교환) 메커니즘은 레코드 집합과 데이터 원본 간에 데이터를 교환합니다. DDX(대화 상자 데이터 교환) 메커니즘은 레코드 집합 개체의 필드 데이터 멤버와 폼의 컨트롤 간에 데이터를 교환합니다. CRecordView 또한 폼의 레코드에서 레코드로 탐색하기 위한 기본 명령 처리기 함수를 제공합니다.

애플리케이션 마법사를 사용하여 양식 기반 애플리케이션을 만들려면 양식 기반 MFC 애플리케이션 및 데이터베이스 지원 만들기, MFC 애플리케이션 마법사를 참조하세요.

양식에 대한 전체 토론은 레코드 뷰를 참조 하세요.

문서 및 뷰에서 레코드 집합 사용

많은 간단한 양식 기반 애플리케이션에는 문서가 필요하지 않습니다. 애플리케이션이 더 복잡한 경우 데이터베이스에 대한 프록시로 문서를 사용하여 데이터 원본에 연결하는 개체를 저장 CDatabase 하려고 할 수 있습니다. 양식 기반 애플리케이션은 일반적으로 뷰에 레코드 집합 개체에 대한 포인터를 저장합니다. 다른 종류의 데이터베이스 애플리케이션은 문서에 레코드 집합 및 CDatabase 개체를 저장합니다. 데이터베이스 애플리케이션에서 문서를 사용할 수 있는 몇 가지 가능성은 다음과 같습니다.

  • 로컬 컨텍스트에서 레코드 집합에 액세스하는 경우 필요에 따라 문서 또는 뷰의 멤버 함수에서 로컬로 개체를 만듭니 CRecordset 다.

    함수에서 레코드 집합 개체를 지역 변수로 선언합니다. 생성자에 NULL을 전달하여 프레임워크에서 임시 CDatabase 개체를 만들고 엽니다. 또는 개체에 포인터를 CDatabase 전달합니다. 함수 내에서 레코드 집합을 사용하고 함수가 종료될 때 자동으로 제거되도록 합니다.

    NULL을 레코드 집합 생성자에 전달하면 프레임워크는 레코드 집합의 GetDefaultConnect 멤버 함수에서 반환된 정보를 사용하여 개체를 CDatabase 만들고 엽니다. 마법사가 자동으로 구현 GetDefaultConnect 됩니다.

  • 문서의 수명 동안 레코드 집합에 액세스하는 경우 문서에 하나 이상의 CRecordset 개체를 포함해야 합니다.

    문서를 초기화할 때나 필요에 따라 레코드 집합 개체를 생성합니다. 레코드 집합이 이미 있는 경우 레코드 집합에 대한 포인터를 반환하는 함수를 작성하거나 아직 없는 경우 레코드 집합을 열 수 있습니다. 필요에 따라 레코드 집합을 닫거나 삭제하고 다시 만들거나 멤버 함수를 Requery 호출하여 레코드를 새로 고칩니다.

  • 문서의 수명 동안 데이터 원본에 액세스하는 경우 개체를 CDatabase 포함하거나 개체에 대한 포인터를 CDatabase 저장합니다.

    개체는 CDatabase 데이터 원본에 대한 연결을 관리합니다. 개체는 문서 생성 중에 자동으로 생성되며 문서를 초기화할 때 해당 Open 멤버 함수를 호출합니다. 문서 멤버 함수에서 레코드 집합 개체를 생성할 때 문서의 CDatabase 개체에 대한 포인터를 전달합니다. 이렇게 하면 각 레코드 집합을 해당 데이터 원본과 연결합니다. 데이터베이스 개체는 일반적으로 문서가 닫히면 제거됩니다. 레코드 집합 개체는 일반적으로 함수의 범위를 종료할 때 제거됩니다.

기타 요소

양식 기반 애플리케이션은 프레임워크의 문서 serialization 메커니즘을 사용하지 않는 경우가 많으므로 파일 메뉴에서 새로 만들기 및 열기 명령을 제거, 비활성화 또는 바꿀 수 있습니다. Serialization 및 데이터베이스 입력/출력 문서를 참조하세요.

프레임워크에서 지원할 수 있는 많은 사용자 인터페이스 가능성을 활용할 수도 있습니다. 예를 들어 분할자 창에서 여러 CRecordView 개체를 사용하고, 여러 MDI(여러 문서 인터페이스) 자식 창에서 여러 레코드 집합을 여는 등의 작업을 수행할 수 있습니다.

구현된 CRecordView 폼이든 다른 폼이든 보기에 있는 모든 항목의 인쇄를 구현할 수 있습니다. 에서 파생된 CFormViewCRecordView 클래스는 인쇄를 지원하지 않지만 인쇄를 허용하도록 멤버 함수를 재정의 OnPrint 할 수 있습니다. 자세한 내용은 CFormView 클래스를 참조하세요.

문서와 뷰를 전혀 사용하지 않을 수 있습니다. 이 경우 MFC: 문서 및 뷰 없이 데이터베이스 클래스 사용

참고 항목

MFC 데이터베이스 클래스