방법: 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를 사용하여 열을 인출하려면
데이터 원본에 대한 연결을 설정합니다.
명령을 실행합니다. 다음 예에서는 IID_IRow를 사용하여 ICommandExecute::Execute()가 호출됩니다.
IRow::GetColumns()를 실행하여 결과 행에 있는 하나 이상의 열을 인출합니다. 데이터를 인출하기 전에 실제 열 크기를 검색하려면 DBCOLUMNACCESS의 pData를 NULL로 설정합니다. 그러면 IRow::GetColumns() 호출에서 열 너비만 반환합니다. 두 번째 IRow::GetColumns() 호출에서는 데이터를 인출합니다.
필요한 모든 열에 액세스할 때까지 IRow::GetColumns()를 실행합니다. 순서대로 열에 액세스해야 합니다.