가상BOOL오픈 (UINTnOpenType=AFX_DB_USE_DEFAULT_TYPE,LPCTSTRlpszSQLNULLDWORDdwOptions=없음=); 던져 (CDBException, CMemoryException);
반환 값
0이 아닌 경우 CRecordset 개체를 열 수 성공적으로; 그렇지 않으면 0 CDatabase::Open (호출) 하는 경우 0을 반환 하는 경우。
매개 변수
nOpenType
AFX_DB_USE_DEFAULT_TYPE, 기본값을 그대로 사용 하거나OpenType열거형에서 다음 값 중 하나를 사용 하 여 :
CRecordset::dynasetnbsp;??양방향 스크롤 recordset입니다. 회원 및 주문 레코드는 recordset을 열 때 데이터 값을 다른 사용자가 변경한 다음 반입 작업 표시 됩니다 결정 됩니다. 다이너셋은 레코드 키 집합 구동 라고도(&N)。
CRecordset::snapshotnbsp;??양방향 스크롤 정적 레코드 집합입니다. Recordset을 열면; 회원 및 레코드의 순서 결정 됩니다. 데이터 값은 레코드가 반입 됩니다 때 결정 됩니다. 다른 사용자가 변경한 레코드를 닫았다가 후 때까지 표시 되지 않습니다(&N).
CRecordset::dynamicnbsp;??양방향 스크롤 recordset입니다. 회원 가입, 주문, 및 데이터 값을 다른 사용자가 변경한 다음 인출 작업이 표시 됩니다. 참고 많은 ODBC 드라이버 이러한 유형의 레코드 집합을 지원 하지 않습니다(&N)。
CRecordset::forwardOnlynbsp;??읽기 전용 recordset만 앞으로 스크롤(&N)。
CRecordset, 기본 값은 CRecordset::snapshot입니다. 기본값 메커니즘 수 Visual c + + 마법사와 ODBC CRecordset DAO CDaoRecordset, 다른 기본값을가지고 있는 상호 작용 하는。
이러한 레코드 집합 형식에 대 한 자세한 내용은 다음 웹 사이트를 참조 하십시오. 문서 레코드 집합 (ODBC)Visual c + + 프로그래머 가이드에서. 관련된 정보에 대 한 참고를 "사용 하 여 블록 및 스크롤형 커서" ODBC SDK Programmer's Reference 에서。
주의nbsp;??요청 된 형식을 지원 하지 않는 경우 프레임 워크에서 예외를 throw 하는(&N)。
lpszSQL
다음 중 하나를 포함 하는 문자열 포인터:
NULL 포인터。
테이블의 이름。
(선택적으로 SQL 어디 또는 ORDER BY 절)와 함께 SQL 선택 문。
미리 정의 된 쿼리 (저장된 프로시저)의 이름을 지정 하는 CALL 문을. 중괄호 및 전화 키워드 사이의 공백을 삽입 하지 않습니다 조심。
이 문자열에 대 한 자세한 내용은 테이블 및 발언에서 Classwizard의 역할의 토론을 참조 하십시오.
아래 나열 된 값의 조합을 지정할 수 있는 마스크입니다. 이들 중 일부는 상호 배타적입니다. 기본값은 없음。
CRecordset::nonenbsp;??아무 옵션을 설정 합니다. 이 매개 변수 값은 다른 모든 값을 함께 사용할 수 없습니다. 기본적으로 레코드 편집 또는 삭제 와 함께 업데이트할 수 있으며 AddNew와 함께 새 레코드를 추가할 수 있습니다. Updatability에는 지정 하는 nOpenType 옵션 뿐만 아니라 데이터 소스에 따라 달라 집니다. 대량 추가 대 한 최적화를 사용할 수 없는 경우 대량 행 페치가 구현 되지 않습니다. 삭제 된 레코드 없습니다 레코드 집합 탐색 하는 동안 무시 됩니다. 책갈피는 사용할 수 없습니다. 자동 더러운 필드 검사 구현(&N)。
CRecordset::appendOnlynbsp;??Recordset에서 편집 또는 삭제 를 허용 하지 않습니다. AddNew 만 허용 합니다. 이 옵션은 CRecordset::readOnly 와 함께(&N)。
CRecordset::readOnlynbsp;??읽기 전용 레코드 집합을 엽니다. 이 옵션은 CRecordset::appendOnly 와 함께(&N)。
CRecordset::optimizeBulkAddnbsp;??준비 된 SQL 문을 사용 하 여 최적화 한 번에 여러 레코드를 추가 합니다. 레코드 집합을 업데이트 하려면 SQLSetPos ODBC API 함수를 사용 하지 않는 경우에 적용 됩니다. 첫 번째 업데이트 되는 필드는 더러운 표시를 결정 합니다. 이 옵션은 CRecordset::useMultiRowFetch 와 함께(&N)。
CRecordset::useMultiRowFetchnbsp;??여러 행을 단일 반입 작업에서 검색할 수 있도록 하는 대량 행 페치를 구현 합니다. 이것은 성능; 개선 하도록 설계 된 고급 기능 그러나 대량 레코드 필드 교환 Classwizard에 의해 지원 되지 않습니다. 이 옵션은 CRecordset::optimizeBulkAdd와 함께 사용할 수 없습니다. 참고는 CRecordset::useMultiRowFetch를 지정 하는 경우 다음 옵션 CRecordset::noDirtyFieldCheck 설정 됩니다 자동으로 (이중 버퍼링을 사용할 수 없음); 앞 으로만 이동 가능한 레코드 집합에 CRecordset::useExtendedFetch 옵션에 자동으로 설정 될 것입니다. 대량 행 페칭에 대 한 자세한 내용은 다음 웹 사이트를 참조 하십시오. 문서 레코드 집합: 레코드 페치 대량 (ODBC)Visual c + + 프로그래머 가이드(&N)。
CRecordset::skipDeletedRecordsnbsp;??레코드 집합을 탐색할 때 모든 삭제 된 레코드를 건너뜁니다. 이 특정 상대 인출에서 성능이 저하 될 것입니다. 이 옵션은 앞 으로만 이동 가능한 레코드 집합에 유효 하지. 참고 CRecordset::skipDeletedRecords드라이버 포장, 레코드 집합에서 삭제 된 행 제거 됩니다 것을 의미 하는 것과 비슷합니다. 그러나, 드라이버 레코드 팩을 하는 경우 그것은 넘어갑니다; 삭제 하는 레코드 recordset이 열려 있는 동안 다른 사용자가 삭제 한 레코드는 건너뛸 하지 것 이다. CRecordset::skipDeletedRecords 는 다른 사용자가 삭제 된 행을 건너뛸 것 이다(&N)。
CRecordset::useBookmarksnbsp;??지원 되는 경우 레코드 집합에 책갈피를 사용할 수 있습니다. 책갈피 데이터 검색 속도가 느린 하지만 데이터 탐색에 대 한 성능을 향상 시킵니다. 앞 으로만 이동 가능한 레코드 집합에 유효 하지 않습니다. 자세한 내용은 다음 웹 사이트를 참조 하십시오. 문서 레코드 집합: 책갈피와 절대 위치 (ODBC)Visual c + + 프로그래머 가이드(&N)。
CRecordset::noDirtyFieldChecknbsp;??자동 더러운 필드 (이중 버퍼링) 검사를 해제 합니다. 이 성능; 향상 됩니다. 그러나, 당신은 수동으로 SetFieldDirty 및 SetFieldNull 멤버 함수를 호출 하 여 더러운으로 필드를 표시 해야 합니다.Note CRecordset 클래스 CDaoRecordset에서 이중 버퍼링 비슷합니다 클래스에는 이중 버퍼링 합니다. 그러나, CRecordset, 당신을 사용할 수 없습니다; 개별 필드에 대해 이중 버퍼링 모든 필드에 대해 설정 또는 모든 필드에 대해 사용 하지 않도록 설정 합니다. 이중 버퍼링에 대 한 자세한 내용은 다음 웹 사이트를 참조 하십시오. DAO 문서 DAO 레코드 필드 교환: 더블 버퍼링 레코드Visual c + + 프로그래머 가이드에서. Note는 CRecordset::useMultiRowFetch옵션을 지정 하는 경우 다음 CRecordset::noDirtyFieldCheck 설정 됩니다 자동으로; 그러나, SetFieldDirty 및 SetFieldNull 에 사용할 수 없습니다 대량 행 페치를 구현 하는 레코드(&N)。
CRecordset::executeDirectnbsp;??준비 된 SQL 문을 사용 하지 마십시오. 성능을 향상 시키려면이 옵션을 지정 Requery 멤버 함수를 호출 하지 것입니다 경우(&N)。
CRecordset::useExtendedFetchnbsp;SQLFetch대신 SQLExtendedFetch 를 구현 합니다. 이 앞 으로만 이동 가능한 레코드 집합으로 대량 행 페치를 구현 하기 위해 설계 되었습니다. 정방향 전용 recordset에서 CRecordset::useMultiRowFetch 옵션을 지정 하는 경우 다음 CRecordset::useExtendedFetch 설정 됩니다 자동으로(&N)。
CRecordset::userAllocMultiRowBuffersnbsp;??사용자는 데이터에 대 한 저장소 버퍼를 할당 합니다. 이 옵션을 사용 하는 CRecordset::useMultiRowFetch 와 함께에서 자신의 저장소; 할당 하려는 경우 그렇지 않으면 프레임 워크는 자동으로 필요한 저장소를 할당 합니다. 자세한 내용은 다음 웹 사이트를 참조 하십시오. 문서 레코드 집합: 레코드 페치 대량 (ODBC)Visual c + + 프로그래머 가이드에서. 참고는 실패 한 어설션 발생 CRecordset::useMultiRowFetch 을 지정 하지 않고 CRecordset::userAllocMultiRowBuffers 를 지정(&N)。
주의
레코드 집합에 의해 정의 된 쿼리를 실행 하려면이 멤버 함수를 호출 해야 합니다. Open을 호출 하기 전에 recordset 개체를 구성 해야 합니다.
이 레코드 집합의 데이터 원본이 연결 열기호출 하기 전에 recordset을 지정 하는 방법에 따라 달라 집니다. CDatabase 개체는 데이터 원본에 연결 되지 않은 레코드 집합 생성자에 전달 하는 경우이 멤버 함수는 GetDefaultConnect 를 사용 하 여 데이터베이스 개체를 열려고 시도 합니다. 레코드 집합 생성자에 NULL 을 전달 하면 생성자, 당신을 위해 CDatabase 개체를 생성 하 고 열기 데이터베이스 개체에 연결 하려고 합니다. 대 한 자세한 내용은 레코드 집합 및 이러한 다양 한 상황에서 연결 닫기, 닫기 참조。
메모nbsp;CRecordset 개체를 통해 데이터 원본에 액세스 항상 공유 하 고 있습니다. CDaoRecordset 클래스와 달리 단독으로 데이터 소스를 여는 CRecordset 개체를 사용할 수 없습니다(&N).
일반적으로 SQL 선택 문을, 쿼리 다음 표의 기준에 따라 레코드를 선택 열기를 호출 하는 경우。
LpszSQL 매개 변수 값
선택한 레코드에 의해 결정 됩니다.
예제
NULL
GetDefaultSQL 에서 반환 하는 문자열。
SQL 테이블 이름
DoFieldExchange 또는 DoBulkFieldExchange 테이블 목록의 모든 열。
"고객"
미리 정의 된 쿼리 (저장된 프로시저) 이름
열을 반환 하는 쿼리 정의。
"{전화 OverDueAccts}"
선택한 열 목록에서 테이블 목록
지정 된 테이블에서 지정 된 열。
"CustId, 고객 으로부터 CustName 선택"
! 경고nbsp;??SQL 문자열에 있는 여분의 공백을 삽입 하지 마십시오 주의 해야 합니다. 예를 들어, 호출 키워드는 중괄호 사이의 공백을 삽입 하는 경우 MFC SQL 문자열 테이블 이름으로 오해를 예외가 발생 하는 SELECT 문을 통합 합니다. 마찬가지로, 귀하의 미리 정의 된 쿼리는 출력 매개 변수를 사용 하는 경우 삽입 하지 않습니다는 중괄호 사이 공백이 및 '?' 기호. 마지막으로, 하지 삽입 해야 합니다는 중괄호 앞에 공백이 CALL 문을 또는 선택 성명에서 선택 키워드 앞(&N)。
일반적인 절차는 오픈; NULL 전달 이 경우 오픈GetDefaultSQL을 호출합니다. 파생 된 CRecordset 클래스를 사용 하는 경우 GetDefualtSQL 마법사에 지정 된 테이블 이름을 제공 합니다. 대신 lpszSQL 매개 변수에서 다른 정보를 지정할 수 있습니다.
당신이 무엇을 전달, 오픈 (문자열 전달 lpszSQL 문자열 추가 SQL 어디 및 ORDER BY 절을 할 수 있습니다) 쿼리에 대 한 최종 SQL 문자열을 생성 한 다음 쿼리를 실행 합니다. Open을 호출한 후 GetSQL 를 호출 하 여 생성 된 문자열을 검사할 수 있습니다. 레코드 집합이 SQL 문을 생성 방법과 레코드를 선택 하는 방법에 대 한 자세한 내용은 문서를 참조 하십시오 레코드 집합: 레코드 선택 방법 (ODBC)Visual c + + 프로그래머 가이드。
레코드 집합 클래스의 필드 데이터 멤버를 선택 하는 데이터의 열에 바인딩됩니다. 첫 번째 레코드가 현재 레코드가 레코드가 반환 되는 경우。
필터 또는 정렬 등 recordset에 대 한 옵션을 설정 하려면 하지만 recordset 개체를 생성 한 후 Open을 호출 하기 전에 이러한 지정 합니다. Recordset이 이미 열려 후 레코드 집합의 레코드를 새로 고치는 경우 Requery 호출。
/ / rs는 CRecordset 또는
/ / Crecordset에서 파생 된 개체
/ / 기본 SQL 문을 사용 하 여 오픈 rs
/ / 책갈피, 구현 및 해제
/ / 자동 더러운 필드 검사
rs입니다.열기 (CRecordset::snapshot, NULL,
nbsp;?????? CRecordset::useBookmarks |
??????? CRecordset::noDirtyFieldCheck);
/ / 완전 한 SELECT 문 전달
/ / 다이너셋 형식으로 오픈
rs입니다.열기 (CRecordset::dynaset,
??????? _T ("선택 L_Name 고객 으로부터"));
/ / 모든 기본값을 적용
rs입니다.(오픈)(&N)