다음을 통해 공유


방법: IRow::GetColumns를 사용하여 열 인출(OLE DB)

IRow 인터페이스를 사용하여 결과 집합에 있는 단일 행의 열에 직접 액세스할 수 있습니다. 따라서 IRow는 행이 한 개인 결과 집합에서 열을 검색하는 데 효과적입니다.

IRow를 사용하여 단일 행을 인출하는 방법을 보여 주는 코드 예제가 있습니다. 이 예제에서는 행에서 한 번에 한 개의 열이 검색됩니다. 이 예제에서는 다음 작업을 수행하는 방법을 보여 줍니다.

  • 열 그룹을 순서대로 인출하는 방법

  • 한 열에 두 번 액세스하는 방법. 처음에는 실제 열 너비를 가져오고 다음에는 실제 데이터에 액세스합니다. DBCOLUMNACCESS 구조에서 pData가 NULL이고 cbMaxLen이 0이면 IRow->GetColumns() 호출에서 실제 열 길이만 반환합니다. 이 경우 같은 열에 대해 IRow->GetColumns()를 다시 호출하여 실제 데이터를 검색할 수 있습니다.

전체 예제 코드는 FetchColumns_B.cpp 파일에 있습니다. MSDN의 SQL Server 다운로드(SQL Server Downloads) 페이지에서 예제가 포함된 보관 파일을 다운로드할 수 있습니다.

이 예제는 Microsoft Visual C++ 2005를 사용하여 개발되었습니다.

아래 코드는 FetchColumns_B.cpp에 사용된 예제 테이블을 만듭니다.

USE AdventureWorks2008R2;
GO

IF EXISTS (SELECT name FROM sysobjects WHERE name = 'MyTable')
     DROP TABLE MyTable;
GO

CREATE TABLE MyTable
(
     col1  int,
     col2  varchar(50),
     col3  char(50),
     col4  datetime,
     col5  float,
     col6  money,
     col7  sql_variant,
     col8  binary(50),
     col9  text,
     col10 image
);
GO
INSERT INTO MyTable
values
(
     10,
     'abcdefghijklmnopqrstuvwxyz',
     'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
     '11/1/1999 11:52 AM',
     3.14,
     99.95,
     CONVERT(nchar(50), N'AbCdEfGhIjKlMnOpQrStUvWxYz'),
     0x123456789,
     REPLICATE('AAAAABBBBB', 500),
     REPLICATE(0x123456789, 500)
);
GO
보안 정보보안 정보

가능하면 Windows 인증을 사용하십시오. Windows 인증을 사용할 수 없으면 런타임에 사용자에게 자격 증명을 입력하라는 메시지를 표시합니다. 자격 증명은 파일에 저장하지 않는 것이 좋습니다. 자격 증명을 유지하려면 Win32 crypto API를 사용하여 자격 증명을 암호화해야 합니다.

IRow::GetColumns를 사용하여 열을 인출하려면

  1. 데이터 원본에 대한 연결을 설정합니다.

  2. 명령을 실행합니다. 다음 예에서는 IID_IRow를 사용하여 ICommandExecute::Execute()가 호출됩니다.

  3. IRow::GetColumns()를 실행하여 결과 행에 있는 하나 이상의 열을 인출합니다. 데이터를 인출하기 전에 실제 열 크기를 검색하려면 DBCOLUMNACCESS의 pData를 NULL로 설정합니다. 그러면 IRow::GetColumns() 호출에서 열 너비만 반환합니다. 두 번째 IRow::GetColumns() 호출에서는 데이터를 인출합니다.

  4. 필요한 모든 열에 액세스할 때까지 IRow::GetColumns()를 실행합니다. 순서대로 열에 액세스해야 합니다.

참고 항목

관련 자료