레코드 집합: 대형 데이터 항목 작업(ODBC)
이 항목은 MFC ODBC 클래스와 MFC DAO 클래스 모두에 적용됩니다.
참고 항목
MFC DAO 클래스를 사용하는 경우 클래스 CLongBinary가 아닌 CByteArray 클래스를 사용하여 큰 데이터 항목을 관리합니다. 대량 행 페치와 함께 MFC ODBC 클래스를 사용하는 경우 대신 CByteArray
사용합니다CLongBinary
. 대량 행 페치 에 대한 자세한 내용은 레코드 집합: 대량 레코드 가져오기(ODBC)를 참조하세요.
데이터베이스가 비트맵(직원 사진, 지도, 제품 사진, OLE 개체 등)과 같은 대량의 데이터를 저장할 수 있다고 가정합니다. 이러한 종류의 데이터는 다음과 같은 이유로 이진 큰 개체(또는 BLOB)라고도 합니다.
각 필드 값이 큽다.
숫자 및 기타 단순 데이터 형식과 달리 예측 가능한 크기는 없습니다.
데이터는 프로그램의 관점에서 형태가 없습니다.
이 항목에서는 이러한 개체를 사용하기 위해 데이터베이스 클래스가 제공하는 지원에 대해 설명합니다.
큰 개체 관리
레코드 집합에는 이진 큰 개체를 관리하는 특별한 어려움을 해결하는 두 가지 방법이 있습니다. CByteArray 클래스를 사용하거나 CLongBinary 클래스를 사용할 수 있습니다. 일반적으로 CByteArray
큰 이진 데이터를 관리하는 기본 방법입니다.
CByteArray
CByteArray 클래스에 설명된 대로 오버헤드 CLongBinary
가 더 많이 필요하지만 더 많은 기능을 제공합니다. CLongBinary
은 CLongBinary 클래스에 간략하게 설명되어 있습니다.
대용량 데이터 항목을 사용하는 CByteArray
방법에 대한 자세한 내용은 Technical Note 45를 참조하세요.
CByteArray 클래스
CByteArray
는 MFC 컬렉션 클래스 중 하나입니다. 개체는 CByteArray
동적 바이트 배열을 저장합니다. 필요한 경우 배열이 증가할 수 있습니다. 이 클래스는 기본 제공 C++ 배열과 마찬가지로 인덱스별로 빠르게 액세스할 수 있습니다. CByteArray
개체는 진단을 위해 직렬화 및 덤프할 수 있습니다. 이 클래스는 지정된 바이트를 가져오고 설정하고, 바이트를 삽입 및 추가하고, 1바이트 또는 모든 바이트를 제거하기 위한 멤버 함수를 제공합니다. 이러한 기능을 사용하면 이진 데이터를 더 쉽게 구문 분석할 수 있습니다. 예를 들어 이진 개체가 OLE 개체인 경우 일부 헤더 바이트를 통해 실제 개체에 도달해야 할 수 있습니다.
레코드 집합에서 CByteArray 사용
레코드 집합의 필드 데이터 멤버에 형식CByteArray
을 제공하여 RFX가 레코드 집합과 데이터 원본 간에 이러한 개체의 전송을 관리할 수 있고 이를 통해 개체 내의 데이터를 조작할 수 있는 고정 기반을 제공합니다. RFX에는 검색된 데이터에 대한 특정 사이트가 필요하며 기본 데이터에 액세스하는 방법이 필요합니다.
대용량 데이터 항목을 사용하는 CByteArray
방법에 대한 자세한 내용은 Technical Note 45를 참조하세요.
CLongBinary 클래스
CLongBinary 개체는 힙에 할당된 스토리지 블록에 대한 핸들 주위 HGLOBAL
의 간단한 셸입니다. 이진 큰 개체를 포함하는 테이블 열을 바인딩하는 경우 RFX는 데이터를 레코드 집합으로 전송해야 할 때 핸들을 할당 HGLOBAL
하고 레코드 집합의 필드에 핸들 CLongBinary
을 저장합니다.
그런 다음 핸들m_hData
을 HGLOBAL
사용하여 데이터 자체로 작업하고 핸들 데이터에서와 마찬가지로 핸들을 작동합니다. 여기서 CByteArray는 기능을 추가합니다.
주의
CLongBinary 개체는 함수 호출에서 매개 변수로 사용할 수 없습니다. 또한 호출 ::SQLGetData
하는 구현은 스크롤 가능한 스냅샷에 대한 스크롤 성능이 반드시 느려집니다. 호출을 ::SQLGetData
사용하여 동적 스키마 열을 검색하는 경우에도 마찬가지일 수 있습니다.