다음을 통해 공유


방법: IRow::GetColumns/IRow::Open 및 ISequentialStream을 사용하여 열 인출

대형 데이터는 ISequentialStream 인터페이스를 사용하여 바인딩하거나 검색할 수 있습니다. 바인딩된 열에서 상태 플래그 DBSTATUS_S_TRUNCATED는 데이터가 잘렸음을 나타냅니다.

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

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

아래 코드는 응용 프로그램에서 사용된 예제 테이블을 만듭니다.

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

/* Enter data. */
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/IRow::Open 및 ISequentialStream을 사용하여 열을 인출하려면

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

  2. 명령을 실행합니다. 이 예에서는 ICommandExecute::Execute()를 IID_IRow로 호출합니다.

  3. IRow::Open() 또는 IRow::GetColumns()를 사용하여 열 데이터를 인출합니다.

    • IRow::Open()은 행에 대해 ISequentialStream을 여는 데 사용할 수 있습니다. DBGUID_STREAM을 지정하여 열에 이진 데이터 스트림이 있음을 나타냅니다. 그런 다음 IStream 또는 ISequentialStream을 사용하여 열에서 데이터를 읽을 수 있습니다.

    • IRow::GetColumns()를 사용하는 경우 DBCOLUMNACCESS 구조의 pData 요소가 스트림 개체를 가리키도록 설정됩니다.

  4. ISequentialStream::Read()를 반복해서 사용하여 지정된 바이트 수를 소비자 버퍼로 읽어 들입니다.

참고 항목

관련 자료