다음을 통해 공유


마법사를 사용하지 않고 소비자 만들기

다음 예제에서는 기존 ATL 프로젝트에 OLE DB 소비자 지원을 추가한다고 가정합니다. MFC 애플리케이션에 OLE DB 소비자 지원을 추가하려는 경우 MFC 애플리케이션 마법사를 실행해야 합니다. 이 마법사는 필요한 모든 지원을 만들고, 애플리케이션을 실행하는 데 필요한 MFC 루틴을 호출합니다.

ATL OLE DB 소비자 마법사를 사용하지 않고 OLE DB 소비자 지원을 추가하려면 다음을 수행합니다.

  • pch.h 파일에 다음 #include 문을 추가합니다.

    #include <atlbase.h>
    #include <atldbcli.h>
    #include <atldbsch.h> // if you are using schema templates
    

소비자는 일반적으로 다음과 같은 일련의 작업을 프로그래밍 방식으로 수행합니다.

  1. 지역 변수에 열을 바인딩하는 사용자 레코드 클래스를 만듭니다. 이 예제에서 CMyTableNameAccessor는 사용자 레코드 클래스입니다(사용자 레코드 참조). 이 클래스에는 열 맵과 매개 변수 맵이 포함됩니다. 열 맵에서 지정한 각 필드에 대한 데이터 멤버를 사용자 레코드 클래스에 선언합니다. 이러한 각 데이터 멤버에 대해 상태 데이터 멤버와 길이 데이터 멤버도 선언합니다. 자세한 내용은 마법사 생성 접근자의 필드 상태 데이터 멤버를 참조하세요.

    참고 항목

    고유한 소비자를 작성하는 경우 데이터 변수가 상태 및 길이 변수 앞에 와야 합니다.

  • 데이터 소스 및 세션을 인스턴스화합니다. 사용할 접근자 및 행 집합의 형식을 결정하고, CCommand 또는 CTable을 사용하여 행 집합을 인스턴스화합니다.

    CDataSource ds;
    CSession ss;
    class CMyTableName : public CCommand<CAccessor<CMyTableNameAccessor>>
    
  • CoInitialize를 호출하여 COM을 초기화합니다. 주 코드에서 호출됩니다. 예시:

    HRESULT hr = CoInitialize(NULL);
    
  • CDataSource::Open 또는 해당 변형 중 하나를 호출합니다.

  • 데이터 소스에 대한 연결과 세션을 열고, 행 집합을 열어서 초기화합니다(명령이 있을 경우 명령도 실행함).

    hr = ds.Open();
    hr = ss.Open(ds);
    hr = rs.Open();            // (Open also executes the command)
    
  • 필요에 따라 CDBPropSet::AddProperty를 사용하여 행 집합 속성을 설정하고 rs.Open에 매개 변수로 전달합니다. 이 작업을 수행하는 방법의 예제는 소비자 마법사 생성 메서드GetRowsetProperties를 참조하세요.

  • 이제 행 집합을 사용하여 데이터를 검색/조작할 수 있습니다.

  • 애플리케이션이 완료되면 연결, 세션 및 행 집합을 닫습니다.

    rs.Close();
    ss.Close();
    ds.Close();
    

    명령을 사용하는 경우 Close 다음에 ReleaseCommand를 호출하는 것이 좋습니다. CCommand::Close의 코드 예제에서는 CloseReleaseCommand를 호출하는 방법을 보여 줍니다.

  • CoUnInitialize를 호출하여 COM 초기화를 취소합니다. 주 코드에서 호출됩니다.

    CoUninitialize();
    

참고 항목

OLE DB 소비자 만들기