다음을 통해 공유


MFC: 문서 및 뷰를 이용하지 않는 데이터베이스 클래스 사용

데이터베이스 애플리케이션에서 프레임워크의 문서/보기 아키텍처를 사용하지 않으려는 경우가 있습니다. 이 항목에서는 다음 내용을 설명합니다.

문서가 필요하지 않은 경우

일부 애플리케이션에는 문서의 고유한 개념이 있습니다. 이러한 애플리케이션은 일반적으로 파일 열기 명령을 사용하여 스토리지에서 메모리로 파일의 전부 또는 대부분을 로드합니다. 파일 저장 또는 다른 이름으로 저장 명령을 사용하여 업데이트된 파일을 한 번에 스토리지에 다시 씁니다. 사용자가 보는 것은 데이터 파일입니다.

그러나 일부 애플리케이션 범주에는 문서가 필요하지 않습니다. 데이터베이스 애플리케이션은 트랜잭션 측면에서 작동합니다. 애플리케이션은 데이터베이스에서 레코드를 선택하고 한 번에 하나씩 사용자에게 표시합니다. 사용자가 보는 것은 일반적으로 단일 현재 레코드이며 메모리에 있는 유일한 레코드일 수 있습니다.

애플리케이션에 데이터 저장을 위한 문서가 필요하지 않은 경우 프레임워크의 문서/보기 아키텍처의 일부 또는 전부를 분배할 수 있습니다. 분배하는 정도는 선호하는 접근 방식에 따라 달라집니다. 다음을 수행할 수 있습니다.

  • 최소한의 문서를 사용하여 데이터 원본에 대한 연결을 저장하지만 직렬화와 같은 일반적인 문서 기능을 제공합니다. 이 기능은 데이터의 여러 보기를 원하고 모든 보기를 동기화하여 한 번에 모두 업데이트하려는 경우에 유용합니다.

  • 보기를 사용하는 대신 직접 그리는 프레임 창을 사용합니다. 이 경우 문서를 생략하고 프레임 창 개체에 데이터 또는 데이터 연결을 저장합니다.

문서 및 뷰에 대한 애플리케이션 마법사 옵션

MFC 애플리케이션 마법사에는 다음 표에 나열된 데이터베이스 선택 지원의 몇 가지 옵션이 있습니다. MFC 애플리케이션 마법사를 사용하여 애플리케이션을 만드는 경우 이러한 모든 옵션은 문서와 뷰가 있는 애플리케이션을 생성합니다. 일부 옵션은 불필요한 문서 기능을 생략하는 문서 및 보기를 제공합니다. 자세한 내용은 데이터베이스 지원, MFC 애플리케이션 마법사를 참조 하세요.

옵션 View Document
없음 CView에서 파생됩니다. 데이터베이스 지원을 제공하지 않습니다. 이것이 기본 옵션입니다.

애플리케이션 유형, MFC 애플리케이션 마법사 페이지에서 문서/보기 아키텍처 지원 옵션을 선택하면 파일 메뉴에서 직렬화 및 새로 만들기, 열기, 저장 및 다른 이름으로 저장 명령을 비롯한 전체 문서 지원이 제공됩니다. 문서가 없는 응용 프로그램을 참조 하세요.
헤더 파일만 CView에서 파생됩니다. 애플리케이션에 대한 기본 수준의 데이터베이스 지원을 제공합니다.

Afxdb.h를 포함합니다. 링크 라이브러리를 추가하지만 데이터베이스별 클래스는 만들지 않습니다. 나중에 레코드 집합을 만들고 이를 사용하여 레코드를 검사하고 업데이트할 수 있습니다.
파일 지원 없이 데이터베이스 보기 파생된 원본 CRecordView 문서 지원을 제공하지만 serialization 지원은 제공하지 않습니다. 문서는 레코드 집합을 저장하고 여러 보기를 조정할 수 있습니다. 는 직렬화 또는 새로 만들기, 열기, 저장 및 다른 이름으로 저장 명령을 지원하지 않습니다. 최소 문서가 있는 애플리케이션을 참조 하세요. 데이터베이스 뷰를 포함하는 경우 데이터의 원본을 지정해야 합니다.

데이터베이스 헤더 파일, 링크 라이브러리, 레코드 뷰 및 레코드 집합을 포함합니다. (다음을 사용하는 애플리케이션에 만 사용 가능애플리케이션 유형, MFC 애플리케이션 마법사 페이지에서 선택한 문서/보기 아키텍처 지원 옵션입니다.)
파일 지원이 있는 데이터베이스 뷰 파생된 원본 CRecordView serialization 및 문서 관련 파일 메뉴 명령을 포함하여 전체 문서 지원을 제공합니다. 데이터베이스 애플리케이션은 일반적으로 파일 단위가 아닌 레코드별로 작동하므로 serialization이 필요하지 않습니다. 그러나 serialization에 특별히 사용할 수 있습니다. 최소 문서가 있는 애플리케이션을 참조 하세요. 데이터베이스 뷰를 포함하는 경우 데이터의 원본을 지정해야 합니다.

데이터베이스 헤더 파일, 링크 라이브러리, 레코드 뷰 및 레코드 집합을 포함합니다. (다음을 사용하는 애플리케이션에 만 사용 가능애플리케이션 유형, MFC 애플리케이션 마법사 페이지에서 선택한 문서/보기 아키텍처 지원 옵션입니다.)

serialization에 대한 대안 및 serialization에 대한 대체 사용에 대한 자세한 내용은 Serialization: Serialization 및 데이터베이스 입력/출력을 참조하세요.

최소 문서가 있는 애플리케이션

MFC 애플리케이션 마법사에는 양식 기반 데이터 액세스 애플리케이션을 지원하는 두 가지 옵션이 있습니다. 각 옵션은 파생 뷰 클래스와 문서를 만듭니다 CRecordView. 문서에서 제외하는 내용이 다릅니다.

파일 지원 없이 문서

문서 serialization이 필요하지 않은 경우 파일 지원 없이 애플리케이션 마법사 데이터베이스 옵션 데이터베이스 보기를 선택합니다. 이 문서는 다음과 같은 유용한 용도로 사용됩니다.

  • 개체를 저장하는 CRecordset 편리한 장소입니다.

    이 사용은 일반적인 문서 개념과 유사합니다. 문서에서는 데이터를 저장하고(또는 이 경우 레코드 집합) 보기는 문서의 보기입니다.

  • 애플리케이션에서 여러 보기(예: 여러 레코드 뷰)를 표시하는 경우 문서에서 뷰 조정을 지원합니다.

    여러 뷰에 동일한 데이터가 표시되는 경우 멤버 함수를 CDocument::UpdateAllViews 사용하여 뷰가 데이터를 변경할 때 모든 보기에 대한 업데이트를 조정할 수 있습니다.

일반적으로 간단한 양식 기반 애플리케이션에 이 옵션을 사용합니다. 애플리케이션 마법사는 이러한 애플리케이션에 대한 편리한 구조를 자동으로 지원합니다.

파일 지원을 사용하여 문서

문서 관련 파일 메뉴 명령 및 문서 직렬화에 대한 대체 용도가 있는 경우 파일 지원을 사용하여 애플리케이션 마법사 데이터베이스 옵션 데이터베이스 보기를 선택합니다. 프로그램의 데이터 액세스 부분의 경우 파일 지원 없이 문서에 설명된 것과 동일한 방식으로 문서를 사용할 수 있습니다. 예를 들어 문서의 serialization 기능을 사용하여 사용자의 기본 설정 또는 기타 유용한 정보를 저장하는 직렬화된 사용자 프로필 문서를 읽고 쓸 수 있습니다. 자세한 내용은 Serialization: Serialization 및 데이터베이스 입력/출력을 참조하세요.

애플리케이션 마법사는 이 옵션을 지원하지만 문서를 직렬화하는 코드를 작성해야 합니다. 직렬화된 정보를 문서 데이터 멤버에 저장합니다.

문서가 없는 애플리케이션

문서나 뷰를 사용하지 않는 애플리케이션을 작성하려는 경우가 있습니다. 문서가 없으면 프레임 창 클래스 또는 애플리케이션 클래스에 데이터(예: CRecordset 개체)를 저장합니다. 추가 요구 사항은 애플리케이션이 사용자 인터페이스를 제공하는지 여부에 따라 달라집니다.

사용자 인터페이스를 사용하는 데이터베이스 지원

사용자 인터페이스(예: 콘솔 명령줄 인터페이스 이외의)가 있는 경우 애플리케이션은 보기가 아닌 프레임 창의 클라이언트 영역에 직접 그립니다. 이러한 애플리케이션은 기본 사용자 인터페이스 또는 기본 사용자 인터페이스를 사용하지 CRecordViewCFormView않지만 일반적으로 일반 대화에 사용합니다CDialog.CDialog

문서 없이 애플리케이션 작성

애플리케이션 마법사는 문서 없이 애플리케이션을 만드는 것을 지원하지 않으므로 고유한 CWinApp파생 클래스를 작성하고 필요한 경우 또는 CFrameWnd CMDIFrameWnd 클래스를 만들어야 합니다. 애플리케이션 개체를 재정 CWinApp::InitInstance 의하고 다음과 같이 선언합니다.

CYourNameApp theApp;

프레임워크는 여전히 메시지 맵 메커니즘 및 기타 많은 기능을 제공합니다.

사용자 인터페이스와 별도로 데이터베이스 지원

일부 애플리케이션에는 사용자 인터페이스 또는 최소 인터페이스만 필요하지 않습니다. 예를 들어 다음과 같이 작성한다고 가정해 보겠습니다.

  • 다른 애플리케이션(클라이언트)이 애플리케이션과 데이터 원본 간의 특수한 데이터 처리를 요구하는 중간 데이터 액세스 개체입니다.

  • 한 데이터베이스 형식에서 다른 데이터베이스 형식으로 데이터를 이동하거나 계산을 수행하고 일괄 업데이트를 수행하는 애플리케이션과 같이 사용자 개입 없이 데이터를 처리하는 애플리케이션입니다.

개체를 소유하는 CRecordset 문서가 없으므로 파생된 애플리케이션 클래스에 포함된 데이터 멤버로 저장하려고 할 수 있습니다 CWinApp. 대안은 다음과 같습니다.

  • 영구 CRecordset 개체를 전혀 유지하지 않습니다. 레코드 집합 클래스 생성자에 NULL을 전달할 수 있습니다. 이 경우 프레임워크는 레코드 집합의 GetDefaultConnect 멤버 함수에 있는 정보를 사용하여 임시 CDatabase 개체를 만듭니다. 이것이 가장 가능성이 큰 대안입니다.

  • 개체를 CRecordset 전역 변수로 만듭니다. 이 변수는 재정의에서 동적으로 만드는 레코드 집합 개체에 대한 포인터여야 합니다 CWinApp::InitInstance . 이렇게 하면 프레임워크가 초기화되기 전에 개체를 생성하지 않아도 됩니다.

  • 문서 또는 뷰의 컨텍스트 내에서와 마찬가지로 레코드 집합 개체를 사용합니다. 애플리케이션 또는 프레임 창 개체의 멤버 함수에 레코드 집합을 만듭니다.

참고 항목

MFC 데이터베이스 클래스