스냅샷
스냅샷은 스냅샷을 만들 때 존재했던 데이터의 정적 뷰를 반영하는 레코드 집합입니다. 스냅샷을 열고 모든 레코드로 이동하면 스냅샷을 호출 Requery
하여 스냅샷을 다시 작성할 때까지 스냅샷에 포함된 레코드 집합과 해당 값이 변경되지 않습니다.
참고 항목
이 항목은 MFC ODBC 클래스에 적용됩니다. MFC ODBC 클래스 대신 MFC DAO 클래스를 사용하는 경우 스냅샷 형식 레코드 집합에 대한 설명은 CDaoRecordset::Open을 참조하세요.
데이터베이스 클래스를 사용하여 업데이트 가능한 스냅샷 또는 읽기 전용 스냅샷을 만들 수 있습니다. 다이나셋과 달리 업데이트 가능한 스냅샷은 다른 사용자가 수행한 레코드 값에 대한 변경 내용을 반영하지 않지만 프로그램에서 수행한 업데이트 및 삭제를 반영합니다. 스냅샷에 추가된 레코드는 호출 Requery
할 때까지 스냅샷에 표시되지 않습니다.
팁
스냅샷은 ODBC 정적 커서입니다. 정적 커서는 해당 레코드로 스크롤할 때까지 실제로 데이터 행을 얻지 않습니다. 모든 레코드가 즉시 검색되도록 하려면 레코드 집합의 끝까지 스크롤한 다음 보려는 첫 번째 레코드로 스크롤할 수 있습니다. 그러나 끝까지 스크롤하면 추가 오버헤드가 수반되고 성능이 저하됩니다.
스냅샷은 보고서를 생성하거나 계산을 수행할 때처럼 작업 중에 데이터를 고정 상태로 유지해야 하는 경우에 가장 유용합니다. 그럼에도 불구하고 데이터 원본은 스냅샷과 상당히 다를 수 있으므로 때때로 다시 빌드할 수 있습니다.
스냅샷 지원은 수준 1 드라이버에 정적 커서 및 위치가 지정된 업데이트(업데이트 가능에 필요)를 제공하는 ODBC 커서 라이브러리를 기반으로 합니다. 이 지원을 위해 커서 라이브러리 DLL을 메모리에 로드해야 합니다. 개체를 CDatabase
생성하고 해당 멤버 함수를 OpenEx
호출할 때 dwOptions 매개 변수의 옵션을 지정 CDatabase::useCursorLib
해야 합니다. 멤버 함수를 Open
호출하면 커서 라이브러리가 기본적으로 로드됩니다. 스냅샷 대신 다이너셋을 사용하는 경우 커서 라이브러리를 로드하지 않으려는 것입니다.
스냅샷은 개체가 생성될 때 CDatabase
ODBC 커서 라이브러리가 로드되었거나 사용 중인 ODBC 드라이버가 정적 커서를 지원하는 경우에만 사용할 수 있습니다.
참고 항목
일부 ODBC 드라이버의 경우 스냅샷(정적 커서)을 업데이트할 수 없습니다. 드라이버 설명서에서 지원되는 커서 유형과 지원하는 동시성 유형을 확인합니다. 업데이트 가능한 스냅샷을 보장하려면 개체를 만들 CDatabase
때 커서 라이브러리를 메모리에 로드해야 합니다. 자세한 내용은 ODBC: ODBC 커서 라이브러리를 참조하세요.
참고 항목
스냅샷과 다이내셋을 모두 사용하려면 두 개의 서로 다른 개체(서로 다른 CDatabase
두 연결)를 기반으로 해야 합니다.
스냅샷이 모든 레코드 집합과 공유하는 속성에 대한 자세한 내용은 레코드 집합(ODBC)을 참조하세요. ODBC 커서 라이브러리를 비롯한 ODBC 및 스냅샷에 대한 자세한 내용은 ODBC를 참조하세요.