오늘은 Recordset 개체의 속성에 대해 이야기해 보겠습니다.
1. CursorType 속성
AdOpenForwardOnly: 앞으로 커서만, 기본값입니다. 레코드를 앞으로만 스크롤할 수 있다는 점을 제외하면 정적 커서와 동일합니다. 레코드세트에서 단방향 이동만 필요할 때 성능을 향상시키는 데 사용합니다. (이름에서 알 수 있듯이 이 커서는 앞으로만 이동할 수 있습니다. 그러나 기능이 제한되어 있으므로 시스템 리소스와 함께 사용할 때 매우 효율적입니다.)
AdOpenKeyset: 키 세트 커서. 다른 사용자가 삭제한 레코드는 레코드 세트에서 액세스할 수 없지만 키 세트 커서는 다른 사용자가 추가한 레코드를 볼 수 없다는 점을 제외하면 동적 커서와 유사합니다. 다른 사용자가 변경한 데이터는 계속 볼 수 있습니다. (KeySet 커서를 사용하면 생성 이후 다른 사용자가 변경한 내용을 볼 수 있지만 다른 사용자가 추가하거나 삭제한 기록은 볼 수 없습니다.)
AdOpenDynamic: 동적 커서. 다른 사용자가 추가, 변경, 삭제한 내용을 볼 수 있습니다. 공급자가 지원하지 않는 책갈피 작업을 제외하고 레코드 집합 내에서 모든 유형의 이동이 허용됩니다. (이 유형의 커서는 강력하며 시스템 리소스를 가장 많이 소모합니다. 동적 커서는 자신이 저장하는 레코드 컬렉션의 모든 변경 사항을 볼 수 있습니다. 동적 커서를 사용하는 사용자는 다른 사용자가 편집, 추가 및 삭제한 내용을 볼 수 있습니다. 이러한 유형의 커서를 허용하면 정기적으로 데이터 소스에서 데이터를 검색하여 이러한 가시성을 지원할 수 있으며 이는 의심할 여지 없이 많은 리소스를 필요로 합니다.)
AdOpenStatic: 정적 커서. 데이터를 찾거나 보고서를 생성하는 데 사용할 수 있는 레코드 모음의 정적 복사본입니다. 또한 다른 사용자가 추가, 변경 또는 삭제한 내용은 표시되지 않습니다. (정적 클래스 커서는 데이터의 스냅샷일 뿐입니다. 즉, RecordSet이 생성된 이후 다른 사용자가 RecordSet에 변경한 내용을 볼 수 없습니다. 이 유형의 커서를 사용하면 앞뒤로 탐색할 수 있습니다. 단순성으로 인해 리소스 요구 사항은 동적보다 적습니다!)
참고: RecordSet이 열리면 CursorType 속성을 변경할 수 없습니다. 그러나 먼저 RecordSet를 닫고 CursorType 속성을 변경한 다음 RecordSet를 다시 열면 커서 유형을 효과적으로 변경할 수 있습니다!
2. LockType 속성 여러 사용자가 동시에 수정할 수 있는 데이터베이스 응용 프로그램에서는 여러 사용자가 동시에 동일한 레코드를 작업할 때 발생할 수 있는 상황을 처리해야 합니다. 이런 일이 발생하면 한 사용자가 자신의 변경 사항을 저장할 때 다른 사람의 변경 사항을 무의식적으로 덮어쓸 수 있으므로 데이터 무결성이 손상됩니다. 그 때에는 아무것도 하지 않는 듯한 느낌이 들 것입니다. 이 상황을 처리하려면. ADO를 사용하면 RecordSet 개체를 업데이트할 때 동시 이벤트 제어 유형을 결정하고 사용자가 편집하는 동안 레코드를 잠그는 방법을 결정할 수 있습니다. 이는 LockType 속성에 의해 결정됩니다. 이 속성에는 네 가지 값이 있습니다.
adLockReadonly: 기본값, 읽기 전용입니다. 데이터는 변경할 수 없습니다. (RecordSet의 기본값입니다. 이 값으로 잠금 방식을 설정하면 Recordset을 업데이트할 수 없습니다.)
adLockPessimistic: 보수적인 레코드 잠금(항목별)입니다. 공급자는 일반적으로 편집 시 데이터 원본의 레코드를 즉시 잠그는 등 레코드의 성공적인 편집을 위해 필요한 작업을 수행합니다. (이 유형의 잠금으로 설정하면 레코드가 잠기고 편집이 시작된 시간과 레코드 업데이트가 데이터 제공자에게 제출되는 시간 사이에 편집하는 사용자만 액세스할 수 있습니다!)
adLockOptimistic: 개방형 레코드 잠금(레코드별)입니다. 공급자는 Update 메서드가 호출될 때만 레코드를 잠그는 개방형 잠금을 사용합니다. (데이터 제공자에게 데이터를 제출하는 순간에만 기록이 잠깁니다.)
adlockBatchOptimistic: 일괄 업데이트를 엽니다. 즉시 업데이트 모드가 아닌 일괄 업데이트 모드에 사용됩니다. (이러한 유형의 잠금 모드로 설정된 RecordSet을 RecordSet의 일괄 업데이트 모드라고 합니다. 데이터를 수정하기 위해 RecordSet을 업데이트하는 속도를 높일 수 있지만 여러 레코드가 동시에 업데이트되기 때문에 동시 접속 관련 문제를 악화시킵니다!)
3 ,AbsolutePage 속성
AbsolutePage 특성은 현재 레코드가 있는 페이지의 페이지 번호를 설정합니다. PageSize 특성을 사용하여 Recordset 개체를 논리적 페이지로 나눕니다. 각 페이지의 레코드 수는 PageSize입니다. 단, 마지막 페이지의 레코드 수는 PageSize보다 작을 수 있습니다. 레코드 수). 모든 데이터 제공자가 이 속성을 지원하는 것은 아니므로 주의해서 사용하십시오.
AbsolutePosition 속성과 마찬가지로 AbsolutePage 속성은 1로 시작합니다. 현재 레코드가 Recordset의 첫 번째 행인 경우 AbsolutePage는 1입니다. AbsolutePage 속성을 설정하여 지정된 페이지에 있는 레코드의 첫 번째 행으로 이동할 수 있습니다.
4. AbsolutePosition 속성 RecordSet에서 현재 표시기의 위치를 결정해야 하는 경우 AbsolutePosition 속성을 사용할 수 있습니다.
AbsolutePosition 속성의 값은 1부터 시작하는 첫 번째 거래에 대한 현재 지표의 위치입니다. 즉, 첫 번째 거래의 AbsolutePosition은 1입니다.
RecordSet에 액세스할 때 RecordSet가 매번 동일한 순서로 표시된다는 보장은 없습니다.
AbsolutePosition을 활성화하려면 먼저 클라이언트 커서(포인터)를 사용하도록 설정해야 합니다. rs.CursorLocation=3
5. PageCount 속성 PageCount 속성을 사용하여 Recordset 개체에 포함된 데이터의 "페이지" 수를 결정합니다. 여기서 "페이지"는 PageSize 속성의 설정과 동일한 크기의 데이터 레코드 모음입니다. 마지막 페이지의 레코드 수가 PageSize 값보다 적더라도 마지막 페이지도 한 페이지로 간주됩니다. 페이지 수. 모든 데이터 공급자가 이 속성을 지원하는 것은 아닙니다.
6. PageSize 속성
PageSize 특성은 ADO가 데이터베이스에 액세스할 때 페이지를 표시하는 방법을 결정하는 핵심입니다. 이를 사용하여 논리적 "페이지"를 형성하는 레코드 수를 결정할 수 있습니다. AbsolutePage 속성을 사용하여 다른 논리적 페이지의 첫 번째 레코드로 이동할 수 있는 페이지 크기를 설정하고 생성합니다. PageSize 속성은 언제든지 설정할 수 있습니다.
7. RecordCount 속성 이는 매우 일반적으로 사용되는 중요한 속성이기도 하며, Recordset 개체에 포함된 레코드 수를 확인하기 위해 RecordCount 속성을 자주 사용합니다. RecordCount 속성을 사용하여 Recordset 개체의 레코드 수를 확인합니다. ADO가 레코드 수를 확인할 수 없거나 공급자 또는 커서 유형이 RecordCount를 지원하지 않는 경우 이 속성은 -1을 반환합니다. 닫힌 레코드 집합에서 RecordCount 속성을 읽으면 오류가 발생합니다. Recordset 개체의 커서 유형은 레코드 수를 결정할 수 있는지 여부에 영향을 미칩니다. RecordCount 속성은 데이터 원본에 따라 정방향 전용 커서의 경우 -1, 정적 또는 키 집합 커서의 경우 실제 개수, 동적 커서의 경우 -1 또는 실제 개수를 반환합니다.
8. BOF 및 EOF 속성 일반적으로 우리는 BOF 및 EOF 속성을 확인하기 위해 ASP 프로그램에 코드를 작성하여 현재 표시기가 가리키는 RecordSet의 위치를 알 수 있습니다. Recordset 개체에 레코드가 포함되어 있거나 이동된 레코드 행이 Recordset 개체의 범위를 초과했는지 여부를 알 수 있습니다.
현재 레코드의 위치가 Recordset 개체의 첫 번째 행 앞에 있으면 BOF 속성은 true를 반환하고, 그렇지 않으면 false를 반환합니다.
현재 레코드의 위치가 Recordset 개체의 마지막 행 뒤에 있으면 EOF 속성은 true를 반환하고, 그렇지 않으면 false를 반환합니다.
(BOF와 EOF는 모두 True이며 RecordSet에 레코드가 없음을 나타냅니다.)
9. Filter 특성은 Recordset의 데이터에 대한 필터링 조건을 지정합니다. Filter 특성을 사용하여 Recordset 개체의 레코드를 선택적으로 차단합니다. 현재 커서가 됩니다.
Filter 속성을
특정
값으로 설정하면 현재 레코드가 새 값을 충족하는 첫 번째 레코드로 이동하기 때문에 이는 AbsolutePosition, AbsolutePage, RecordCount 및 PageCount와 같은 현재 커서 반환 값을 기반으로 하는 다른 속성에 영향을 미칩니다.
이 속성은 매우 유용하다고 생각합니다. 때로는 레코드 집합을 열고 특정 판단을 내린 후 레코드를 필터링하고 싶을 때도 있습니다. 즉, 레코드 집합을 닫고 새 SQL 문으로 열어야 할까요? 아니요. 필터 속성을 사용하여 필터링합니다. 예를 들어
rs.open exec,conn,1,1
만약 .... 그러면 rs.filter="name='xxx'"
대신에
rs.open exec,conn,1,1
만약...그러면
RS.닫기
exec=exec&" 여기서 이름='xxx'"
rs.open exec,conn,1,1
종료하면
사실 필터는 앞으로 ASP 기술에서 많이 언급될 것입니다.
내일 우리는 Recordset 개체의 메서드에 대해 계속해서 이야기하겠습니다.