이 글에서는 adodb.recordset.open(rs.open) 메소드 매개변수에 대한 자세한 설명을 주로 소개합니다.
ADO 레코드세트 개체
ADO Recordset 개체는 데이터베이스 테이블의 레코드 집합을 보유하는 데 사용됩니다. Recordset 개체는 레코드와 열(필드)로 구성됩니다.
ADO에서 이 개체는 데이터베이스의 데이터를 처리하는 데 가장 중요하고 가장 일반적으로 사용되는 개체입니다.
ProgID
objRecordset=Server.CreateObject(ADODB.recordset) 설정
레코드 집합을 처음 열면 현재 레코드 포인터가 첫 번째 레코드를 가리키며 BOF 및 EOF 속성은 False가 됩니다. 레코드가 없으면 BOF 및 EOF 속성은 True입니다.
Recordset 개체는 두 가지 유형의 업데이트를 지원할 수 있습니다.
즉시 업데이트 - Update 메서드가 호출되면 모든 변경 사항이 즉시 데이터베이스에 기록됩니다. 일괄 업데이트 - 공급자는 여러 변경 사항을 캐시한 다음 UpdateBatch 메서드를 사용하여 이러한 변경 사항을 데이터베이스로 전송합니다.
ADO에서는 4가지 다른 커서(포인터) 유형이 정의됩니다.
•동적 커서 - 다른 사용자가 추가, 변경 및 삭제한 내용을 볼 수 있습니다.
•키 세트 커서 - 다른 사용자가 추가한 내용을 볼 수 없다는 점과 다른 사용자가 삭제한 기록에 액세스할 수 없다는 점을 제외하면 동적 커서와 유사합니다. 다른 사용자가 변경한 데이터는 계속 표시됩니다.
• 정적 커서 - 데이터를 찾거나 보고서를 생성하는 데 사용할 수 있는 레코드세트의 정적 복사본을 제공합니다. 또한 다른 사용자가 추가, 변경, 삭제한 내용도 표시되지 않습니다. 이는 클라이언트 Recordset 개체를 열 때 허용되는 유일한 커서 유형입니다.
• 앞으로 커서만 - 레코드세트에서 앞으로 스크롤만 허용합니다. 또한 다른 사용자가 추가, 변경, 삭제한 내용도 표시되지 않습니다.
커서 유형은 Open 메서드의 CursorType 속성이나 CursorType 매개 변수를 통해 설정할 수 있습니다.
참고: 모든 공급자가 Recordset 개체의 모든 메서드와 속성을 지원하는 것은 아닙니다.
ADO Recordset 개체에 대해 더 알고 싶은 친구는 여기로 이동하여 더 많은 콘텐츠를 볼 수 있습니다.
읽기만 하고 업데이트 작업을 포함하지 않는 경우 1, 1을 사용합니다.
읽기 및 업데이트 작업이 포함된 경우 1,3 또는 3,2를 사용할 수 있습니다.
Recordset 개체의 개방형 메서드 프로토타입:
Open([소스],[활성 연결],[커서 유형],[잠금 유형],[옵션])
CursorType 커서 유형:
상수 adOpenForwardOnly = 0
앞으로 커서는 기본 커서이며 가장 빠른 실행 성능을 제공합니다. 이를 사용하여 레코드 세트를 열고 쌍에서 끝까지 모든 결과를 순서대로 가져옵니다. 뒤로 스크롤을 지원하지 않으며 결과 간 단방향 이동만 허용합니다.
상수 adOpenKeyset = 1
정적 커서는 커서가 처음 열릴 때 테이블의 데이터 상태를 반영합니다. 커서는 기본 테이블의 데이터 행이 업데이트되었는지, 삭제되었는지 또는 새 데이터가 추가되었는지 확인할 수 없습니다. 그러나 앞으로만 이동할 수 있는 대륙 커서와 달리 정적 커서는 결과 간에 앞뒤로 스크롤할 수 있습니다.
상수 adOpenDynamic = 2
키보드 기반 커서는 테이블의 기본 데이터 행에 대한 전체가 아닌 일부 변경 사항을 쿼리할 수 있습니다. 특히, 데이터의 업데이트 여부를 정확하게 반영합니다. 그러나 다른 사용자가 데이터 행을 삭제했는지 여부는 확인할 수 없습니다. 삭제된 데이터 행은 레코드세트에 구멍을 남깁니다. 키보드 기반 커서는 결과의 앞/뒤 스크롤을 지원합니다.
상수 adOpenStatic = 3
동적 커서는 가장 풍부한 커서 유형입니다. 커서가 열려 있으면 다른 사용자가 테이블에 변경한 내용을 쿼리하고 스크롤을 지원할 수 있습니다.
잠금 유형잠금 유형:
상수 adLockReadOnly = 1
기본 잠금 유형인 읽기 전용 잠금을 사용하면 여러 사용자가 동시에 동일한 데이터를 읽을 수 있지만 데이터를 변경할 수는 없습니다.
상수 adLockPessimistic = 2
비관적 잠금으로 데이터 개체를 엽니다. 이 접근 방식에서는 귀하가 레코드를 편집하는 동안 다른 사용자가 데이터에 액세스할 수 있다고 가정합니다. 이 시점에서 레코드 편집을 시작하면 다른 사용자가 데이터에 액세스할 수 없습니다.
상수 adLockOptimistic = 3
낙관적 잠금을 사용하여 데이터 개체를 엽니다. 이 접근 방식에서는 레코드를 편집하는 동안 다른 사용자가 데이터에 액세스하지 않는다고 가정합니다. 다른 사용자는 변경이 이루어질 때까지 기록에 접근할 수 없습니다.
상수 adLockBatchOptimistic = 4
다중 행 일괄 업데이트를 수행할 때 이 유형을 사용하십시오.
옵션 매개변수:
Options 매개변수는 레코드세트를 여는 데 사용되는 명령 문자열 유형을 나타냅니다. 실행 중인 문자열의 내용에 대한 ADO 정보를 알려주면 명령 문자열을 효율적으로 실행하는 데 도움이 됩니다.
adCMDTable. 실행되는 문자열에는 테이블 이름이 포함됩니다.
adCMDText. 실행되는 문자열에는 명령 텍스트가 포함되어 있습니다.
adCMDStoredProc. 실행 중인 문자열에는 저장 프로시저 이름이 포함되어 있습니다.
adCMDU알 수 없음. 문자열의 내용은 지정되지 않습니다. (이것이 기본값입니다.)
간단히 말하면:
RS.OPEN SQL,CONN,A,B
A: ADOPENFORWARDONLY(=0)는 읽기 전용이며 현재 데이터 레코드는 아래쪽으로만 이동할 수 있습니다.
ADOPENSTATIC (=3) 읽기 전용, 현재 데이터 레코드를 자유롭게 이동할 수 있습니다.
ADOPENKEYSET(=1)을 읽고 쓸 수 있으며, 현재 데이터 레코드를 자유롭게 이동할 수 있습니다.
ADOPENDYNAMIC(=2)을 읽고 쓸 수 있으며, 현재 데이터 레코드를 자유롭게 이동하고, 새로운 레코드를 볼 수 있습니다.
B: 읽기 전용 레코드를 여는 데 사용되는 ADLOCKREADONLY(=1) 기본값
ADLOCKPESSIMISTIC(=2) 비관적 잠금
ADLOCKOPTIMISTIC(=3) 낙관적 잠금
ADLOCKBATCHOPTIMISTIC(=4) 일괄 낙관적 잠금