Crecordset:: Getfieldvalue

Getfieldvalue를 무효화 (LPCTSTR lpszNameCDBVariantamp; varValue짧은nFieldType= DEFAULT_FIELD_TYPE);
(CDBException, CMemoryException)을 던져;(&A)

Getfieldvalue를 무효화 (짧은 nIndexCDBVariantamp; varValue짧은nFieldType= DEFAULT_FIELD_TYPE);
(CDBException, CMemoryException)을 던져;(&A)

Getfieldvalue를 무효화 (LPCTSTR lpszNameCStringamp;strValue(&A) );
throw (CDBException, CMemoryException);

Getfieldvalue를 무효화 (짧은 nIndexCStringamp;strValue(&A) );
throw (CDBException, CMemoryException);

매개 변수

lpszName

필드의 이름。

varValue

필드의 값을 저장 하는 CDBVariant 개체에 대 한 참조。

nFieldType

필드의 ODBC C 데이터 형식입니다. 기본값 DEFAULT_FIELD_TYPE를 사용 하 여 강제로 GetFieldValue 를 기반으로 다음 표에서 SQL 데이터 형식을 C 데이터 형식을 결정 합니다. 그렇지 않으면, 지정할 수 있는 데이터를 직접 입력 하거나 호환 가능한 데이터 형식; 예를 들어, SQL_C_CHAR 에 모든 데이터 형식을 저장할 수 있습니다.

C 데이터 형식 SQL 데이터 형식
SQL_C_BIT SQL_BIT
SQL_C_UTINYINT SQL_TINYINT
SQL_C_SSHORT SQL_SMALLINT
SQL_C_SLONG SQL_INTEGER
SQL_C_FLOAT SQL_REAL
SQL_C_DOUBLE SQL_FLOAT
SQL_DOUBLE
SQL_C_TIMESTAMP SQL_DATE
SQL_TIME
SQL_TIMESTAMP
SQL_C_CHAR SQL_NUMERIC
SQL_DECIMAL
SQL_BIGINT
두 배인 SQL_CHAR
SQL_VARCHAR
SQL_LONGVARCHAR
SQL_C_BINARY SQL_BINARY
SQL_VARBINARY
SQL_LONGVARBINARY

ODBC 데이터 형식에 대 한 자세한 내용은 다음 웹 사이트를 참조 하십시오. "SQL 데이터 형식" 및 "C 데이터 형식" ODBC SDK Programmer's Reference 의 부록 d 항목。

nIndex

필드의 인덱스。

strValue

필드의 값을 저장 하는 CString 개체에 대 한 참조는 필드의 데이터 형식에 관계 없이 텍스트로 변환。

주의

현재 레코드의 필드 데이터를 검색 하려면이 멤버 함수를 호출 합니다. 이름별 또는 인덱스 별로 필드를 조회할 수 있습니다. CDBVariant 개체 또는 CString 개체에서 필드 값을 저장할 수 있습니다.

대량 행 페치가 구현 하는 경우 현재 레코드의 항상 행 집합의 첫 번째 레코드에 위치 합니다. GetFieldValue 주어진된 행 집합 내에서 레코드를 사용 하려면 먼저 행 집합 내에서 원하는 행으로 커서를 이동 하려면 SetRowsetCursorPosition 멤버 함수를 호출 해야 합니다. 그런 다음 해당 행에 대 한 GetFieldValue 를 호출 합니다. 대량 행 페치를 구현 하려면 Open 멤버 함수에서 dwOptions 매개 변수의 CRecordset::useMultiRowFetch 옵션 지정。

GetFieldValue 를 사용 하 여 정적으로 디자인 타임에 바인딩 하는 것 보다는 실행된 시간에 동적으로 필드를 가져올 수 있습니다. 예를 들어, 직접 CRecordset에서 recordset 개체를 선언 하는 경우 사용 해야 합니다 GetFieldValue ; 필드 데이터를 검색 하려면 레코드 필드 교환 RFX (), 또는 (대량 RFX) 대량 레코드 필드 교환 구현 되지 않았습니다.

메모nbsp;CRecordset에서 파생 하지 않고 recordset 개체를 선언 하는 경우 ODBC 커서 라이브러리 로드 있지 않습니다. 커서 라이브러리는 있어야 recordset 하나 이상의 바운드 열; 그러나, 직접 CRecordset 사용 하는 경우 없음 열이 바인딩됩니다. 멤버 함수 CDatabase::OpenEx 및 CDatabase::Open 컨트롤 커서 라이브러리를 로드할 수 있는지 여부(&N)。

GetFieldValue SQLGetDataODBC API 함수를 호출합니다. 필드 값의 실제 길이 대 한 SQL_NO_TOTAL 값을 출력 하는 드라이버, GetFieldValue 에서 예외가 발생 합니다. SQLGetData에 대 한 자세한 내용은 ODBC SDK Programmer's Reference 를 참조 하십시오.

예제

다음 샘플 코드에서는 GetFieldValue CRecordset 에서 직접 선언 하는 recordset 개체에 대 한。

/ / 만들고; 데이터베이스 개체 열기
/ / 커서 라이브러리를 로드 하지 않습니다
CDatabase db;
db입니다.OpenEx (NULL, CDatabase::forceOdbcDialog);

/ / 만들고 recordset 개체를 엽니다.
/ / Crecordset에서 직접. 유의
/ / 테이블 연결 된 데이터베이스에 존재 해야 합니다.
/ / ForwardOnly 형식 레코드 집합을 사용 하는 최고의 대 한
/ / 성능만 MoveNext 필수 이므로
CRecordset rs (amp; db);
rs입니다.열기 (CRecordset::forwardOnly,
 ??????? _T ("선택 * Sometable에서"));

/ / CDBVariant 개체 만들기
/ / 필드 데이터를 저장할
CDBVariant varValue;

/ / 레코드 집합을 통해 루프
/ / Getfieldvalue를 사용 하 여 및
/ / 검색 GetODBCFieldCount
/ / 모든 열에 데이터
짧은 nFields rs =.GetODBCFieldCount ();
동안 (! rs.IsEOF ())
{
 ? 에 대 한 (짧은 인덱스 = 0; 색인 < nFields; 색인 + +)
 ? {
 ???? rs입니다.GetFieldValue (인덱스, varValue);
 ???? / / varValue 함께 뭔가
 ? }
 ? rs입니다.MoveNext ();
}

rs입니다.Close ();
db입니다.Close)

메모nbsp;CDaoRecordsetDAO 클래스와는 달리 CRecordset 은 SetFieldValue 멤버 함수를 있지 않습니다. 그것은 효과적으로 읽기 전용 CRecordset에서 직접 개체를 만드는 경우(&N)。

대량 행 페칭에 대 한 자세한 내용은 다음 웹 사이트를 참조 하십시오. 문서 레코드 집합: 레코드 페치 대량 (ODBC) Visual c + + 프로그래머 가이드。

CRecordset 개요 |nbsp; 클래스 멤버 (ko) | 계층 구조 차트(&N)

참고 항목nbsp;CRecordset::DoFieldExchange, CRecordset::DoBulkFieldExchange, CRecordset::GetODBCFieldCount, CRecordset::GetODBCFieldInfo, CRecordset::SetRowsetCursorPosition(&N)

Index