다음을 통해 공유


사용자 레코드

사용자 레코드는 행 집합의 열 데이터를 나타내는 코드와 데이터 구조를 제공합니다. 사용자 레코드는 컴파일 타임이나 런타임에 만들 수 있습니다. ATL OLE DB 공급자 마법사를 사용하여 공급자를 만들면 마법사가 다음과 같은 기본 사용자 레코드를 만듭니다. 이 경우 공급자 이름(약식 이름)을 "MyProvider"로 지정했다고 가정합니다.

class CWindowsFile:
   public WIN32_FIND_DATA
{
public:

BEGIN_PROVIDER_COLUMN_MAP(CMyProviderWindowsFile)
   PROVIDER_COLUMN_ENTRY("FileAttributes", 1, dwFileAttributes)
   PROVIDER_COLUMN_ENTRY("FileSizeHigh", 2, nFileSizeHigh)
   PROVIDER_COLUMN_ENTRY("FileSizeLow", 3, nFileSizeLow)
   PROVIDER_COLUMN_ENTRY_STR("FileName", 4, cFileName)
   PROVIDER_COLUMN_ENTRY_STR("AltFileName", 5, cAlternateFileName)
END_PROVIDER_COLUMN_MAP()

};

OLE DB 공급자 템플릿은 클라이언트와의 상호 작용에 관련된 모든 OLE DB 사항을 처리합니다. 공급자는 응답에 필요한 열 데이터를 얻기 위해 사용자가 사용자 레코드에 반드시 넣어야 할 함수인 GetColumnInfo 함수를 호출합니다. 예를 들어, 다음과 같이 이 함수를 .h 파일에 선언하여 사용자 레코드의 GetColumnInfo를 명시적으로 재정의할 수 있습니다.

template <class T>
static ATLCOLUMNINFO* GetColumnInfo(T* pThis, ULONG* pcCols) 

다음과 일치합니다.

static ATLCOLUMNINFO* GetColumnInfo(CommandClass* pThis, ULONG* pcCols)
static ATLCOLUMNINFO* GetColumnInfo(RowsetClass* pThis, ULONG* pcCols)

또한 사용자 레코드의 .cpp 파일에서 GetColumnInfo를 구현해야 합니다.

PROVIDER_COLUMN_MAP 매크로를 사용하면 GetColumnInfo 함수를 만드는 데 도움이 됩니다.

  • BEGIN_PROVIDER_COLUMN_MAP은 함수 프로토타입과 ATLCOLUMNINFO 구조의 정적 배열을 정의합니다.

  • PROVIDER_COLUMN_ENTRY는 단일 ATLCOUMNINFO를 정의하고 초기화합니다.

  • END_PROVIDER_COLUMN_MAP은 배열과 함수를 닫습니다. 또한 이 함수는 pcCols매개 변수에 배열 요소의 개수를 배치합니다.

런타임에 사용자 레코드를 만들면 GetColumnInfo 가 pThis 매개 변수를 사용하여 행 집합이나 명령 인스턴스에 대한 포인터를 받습니다. 명령과 행 집합은 IColumnsInfo 인터페이스를 지원하므로 이 포인터에서 열 정보를 가져올 수 있습니다.

CommandClassRowsetClass는 사용자 레코드를 사용하는 명령과 행 집합입니다.

사용자 레코드에서 GetColumnInfo를 재정의하는 자세한 예제는 소비자에게 반환되는 열을 동적으로 결정을 참조하십시오.

참고 항목

개념

OLE DB 공급자 템플릿 구조