오늘은 Recordset 개체의 몇 가지 메서드에 대해 이야기해 보겠습니다.
1. AddNew 메서드는 Recordset 개체를 업데이트할 수 있는 새 레코드를 생성합니다.
recordset.AddNew FieldList, 값
FieldList 선택사항. 단일 이름, 이름 집합 또는 새 레코드에 있는 필드의 서수 위치입니다.
값은 선택 사항입니다. 새 레코드의 필드에 대한 단일 또는 값 집합입니다. Fields가 배열인 경우 Values도 동일한 수의 구성원을 가진 배열이어야 하며, 그렇지 않으면 오류가 발생합니다. 필드 이름의 순서는 각 배열의 필드 값 순서와 일치해야 합니다.
우리는 보통
rs.addnew
rs("xx")=xx
rs("xx")=xx
RS.업데이트
즉시 업데이트 모드(제공자는 Update 메서드가 호출될 때 즉시 기본 데이터 소스에 변경 사항을 기록함)에서 매개 변수 없이 AddNew 메서드를 호출하면 EditMode 속성이 adEditAdd로 설정됩니다. 공급자는 필드 값에 대한 모든 변경 사항을 로컬로 캐시합니다. Update 메서드를 호출하여 새 레코드를 데이터베이스에 전달하고 EditMode 속성을 adEditNone으로 재설정합니다. Fields 및 Values 매개 변수가 전달되면 ADO는 Update를 호출하지 않고 즉시 새 레코드를 데이터베이스에 전달하며 EditMode 속성 값은 변경되지 않습니다(adEditNone).
ASP에서 ADO의 AddNew 메서드를 사용하는 것과 "Insert into..." 문을 직접 사용하는 것의 차이점이 무엇인지 물어볼 수 있습니다. 어느 쪽이 더 낫나요? 대답: ADO의 AddNew 메서드는 "Insert into" 문만 캡슐화합니다. 따라서 대량의 데이터를 작업할 때 SQL 문을 직접 사용하면 ADO의 "변환" 시간이 줄어들기 때문에 데이터 액세스 속도가 크게 향상됩니다.
2. 삭제 방법은 현재 레코드 또는 레코드 그룹을 삭제합니다.
recordset.Delete AffectRecords
AffectRecords AffectEnum 값은 삭제 메서드의 영향을 받는 레코드 수를 결정합니다. 이 값은 다음 상수 중 하나일 수 있습니다.
AdAffectCurrent 기본값. 현재 레코드만 삭제하세요.
AdAffectGroup은 현재 필터 속성 설정을 충족하는 레코드를 삭제합니다. 이 옵션을 사용하려면 필터 속성을 미리 정의된 유효한 상수 중 하나로 설정해야 합니다.
adAffectAll은 모든 기록을 삭제합니다.
adAffectAllChapters 모든 하위 집합 레코드를 삭제합니다.
즉시 업데이트 모드를 사용하면 데이터베이스에서 즉시 삭제됩니다. 그렇지 않으면 레코드가 캐시에서 삭제되도록 표시되고 Update 메서드가 호출될 때 실제 삭제가 발생합니다.
3. Update 메소드는 Recordset 개체의 현재 레코드에 대한 모든 변경 사항을 저장합니다.
레코드세트.필드, 값 업데이트
필드는 선택사항입니다. 단일 이름을 나타내는 변형 유형 또는 수정해야 하는 필드(하나 이상)의 이름과 일련 번호 위치를 나타내는 변형 유형 배열입니다.
값은 선택 사항입니다. 단일 값을 나타내는 변형 유형 또는 새 레코드의 필드(단일 또는 다중) 값을 나타내는 변형 유형 배열.
현재 레코드에 대한 변경 사항을 취소하거나 새로 추가된 레코드를 삭제하려면 CancelUpdate 메서드를 호출해야 합니다.
4. CancelUpdate 방법
레코드세트.취소업데이트
현재 레코드의 변경 사항을 취소하거나 새로 추가된 레코드를 삭제하려면 CancelUpdate 메서드를 사용하십시오. Update 메서드가 호출된 후에는 현재 레코드 또는 새 레코드에 대한 변경 내용을 취소할 수 없습니다. CancelUpdate 메서드가 호출될 때 새 레코드가 추가되면 AddNew가 호출되기 전의 현재 레코드가 다시 현재 레코드가 됩니다. 현재 레코드가 변경되지 않았거나 새 레코드가 추가된 경우 CancelUpdate 메서드를 호출하면 오류가 생성됩니다.
5. Find 메서드는 레코드 집합에서 지정된 기준을 충족하는 레코드를 검색합니다. 기준이 충족되면 레코드세트 위치는 찾은 레코드에 설정되고, 그렇지 않으면 레코드세트의 끝 부분에 위치가 설정됩니다.
찾기(기준, SkipRows, searchDirection, 시작)
기준 열 이름, 비교 연산자 및 검색 값을 지정하는 명령문이 포함된 문자열입니다.
SkipRows 선택 사항이며 기본값이 0인 긴 정수 값으로 현재 행의 오프셋이나 검색을 시작하는 책갈피를 지정합니다.
searchDirection 검색이 현재 행에서 시작되어야 하는지 아니면 다음 유효한 행에서 시작되어야 하는지를 지정하는 선택적 SearchDirectionEnum 값입니다. 해당 값은 adSearchForward 또는
adSearchBackward일 수 있습니다. 검색이 레코드세트의 시작 또는 끝에서 끝나는지 여부는 searchDirection 값에 따라 결정됩니다.
start 선택 사항, 변형 북마크, 검색 시작 위치로 사용됩니다.
기준 "비교 연산자"는 ">"(보다 큼), "<"(보다 작음), "="(같음), ">="(크거나 같음), "<="(보다 작음)일 수 있습니다. 또는 같음), " <>"
(같지 않음) 또는 "like"(패턴 일치). 기준의 값은 문자열, 부동 소수점 숫자 또는 날짜일 수 있습니다. 문자열 값은 작은따옴표로 구분됩니다(예: "state = 'WA'").
날짜 값은 "#"(숫자 기호)으로 구분됩니다(예: "start_date > #7/22/97#").
find는 여러 필드를 지원하지 않는다는 점에 유의해야 합니다. 그러나 필터를 사용하면 이를 달성할 수 있습니다. "name='abc'"AND "city='sh'"는 허용되지 않습니다.
6. Move 메서드는 Recordset 개체에서 현재 레코드의 위치를 이동합니다.
레코드 세트.NumRecords 이동, 시작
NumRecords 현재 레코드 위치에서 이동할 레코드 수를 지정하는 부호 있는 긴 정수 표현식입니다.
북마크를 계산하는 데 사용되는 선택 사항, 문자열 또는 변형 유형을 시작합니다. 다음 값 중 하나일 수도 있습니다.
AdBookmark현재 기본값. 현재 레코드에서 시작합니다.
AdBookmarkFirst는 첫 번째 레코드부터 시작됩니다.
AdBookmarkLast는 마지막 레코드부터 시작됩니다.
참고할 사항은 다음과 같습니다.
(1) NumRecords 매개변수가 0보다 크면 현재 레코드 위치가 앞으로(레코드 세트의 끝쪽으로) 이동합니다. NumRecords가 0보다 작으면 현재 레코드 위치가 뒤로(레코드 세트의 시작 부분으로) 이동됩니다.
(2) 빈 Recordset 개체에서 Move 메서드를 호출하면 오류가 발생합니다.
(3) Move 호출이 현재 레코드 위치를 첫 번째 레코드 앞으로 이동하는 경우 ADO는 현재 레코드를 레코드 집합의 첫 번째 레코드 앞에 배치합니다(BOF는 True). BOF 속성이 이미 True인 경우 뒤로 이동하려고 하면 오류가 발생합니다. Move 호출이 현재 레코드 위치를 테일 레코드 뒤로 이동하면 ADO는 현재 레코드를 레코드 세트의 테일 레코드 뒤에 배치합니다(EOF는 True). EOF 속성이 이미 True인 경우 앞으로 이동하려고 하면 오류가 발생합니다.
7. MoveFirst, MoveLast, MoveNext 및 MovePrevious 메소드는 지정된 Recordset 개체의 첫 번째, 마지막, 다음 또는 이전 레코드로 이동하고 해당 레코드를 현재 레코드로 만듭니다.
recordset.{MoveFirst | MoveLast | MoveNext |
참고할 사항은 다음과 같습니다.
(1) MoveNext 메서드를 사용하여 현재 레코드를 한 레코드 앞으로(레코드세트의 아래쪽으로) 이동합니다. 마지막 레코드가 현재 레코드이고 MoveNext 메서드가 호출되면 ADO는 Recordset의 테일 레코드 뒤에 현재 레코드를 설정합니다(EOF는 True). EOF 속성이 이미 True인 경우 앞으로 이동하려고 하면 오류가 발생합니다.
(2) MovePrevious 메소드를 사용하여 현재 레코드 위치를 한 레코드 뒤로(레코드 세트의 위쪽으로) 이동합니다. Recordset 개체는 뒤로 커서 이동을 지원해야 합니다. 그렇지 않으면 메서드 호출에서 오류가 발생합니다. 첫 번째 레코드가 현재 레코드이고 MovePrevious 메서드가 호출되면 ADO는 Recordset의 첫 번째 레코드 앞에 현재 레코드를 설정합니다(BOF는 True). BOF 속성이 True인 경우 뒤로 이동하면 오류가 발생합니다.
8. Clone 메서드는 기존 Recordset 개체와 동일한 중복 Recordset 개체를 만듭니다. 선택적으로 복제본이 읽기 전용임을 지정합니다.
rstDuplicate = rstOriginal.Clone 설정
생성 중인 중복 Recordset 개체를 식별하는 rstDuplicate 개체 변수입니다.
rstOriginal 개체 변수는 복사할 Recordset 개체를 식별합니다.
Clone 메서드를 사용하면 Recordset 개체의 여러 복사본을 만들 수 있습니다. 이는 특정 레코드 그룹에 여러 개의 현재 레코드를 유지하려는 경우에 유용합니다. Clone 메서드를 사용하는 것은 초기 정의와 동일한 정의를 사용하여 새 Recordset 개체를 만들고 여는 것보다 훨씬 더 효율적입니다.
즉,
rs.open exec,conn,1,1
rs2.open exec,conn,1,1
이렇게 다시 작성해야 합니다.
rs.open exec,conn,1,1
rs2=rs.clone은
다음 사항에 유의해야 합니다.
(1) 새로 생성된 사본의 현재 기록이 첫 번째 기록으로 설정됩니다.
(2) 원본 레코드세트를 닫아도 복사본은 닫히지 않으며, 복사본을 닫아도 원본 레코드세트나 다른 복사본은 닫히지 않습니다.
9. Close 메서드는 열려 있는 개체와 관련 개체를 모두 닫습니다.
개체.닫기
참고할 사항은 다음과 같습니다.
(1) 관련된 모든 시스템 리소스를 해제하기 위해 Close 메서드를 사용하여 Recordset 개체를 닫습니다. 객체를 닫아도 메모리에서 삭제되지는 않습니다. 속성 설정을 변경하고
나중에 다시 열 수 있습니다. 메모리에서 개체를 완전히 제거하려면 개체 변수를 Nothing으로 설정합니다.
(2) 즉시 업데이트 모드로 편집하는 경우 Close 메서드를 호출하면 오류가 발생하므로 먼저 Update 또는 CancelUpdate 메서드를 호출해야 합니다.
10. 개방형 메소드, 이것을 마지막에 말하는 이유는 이전 속성 메소드가 명확하지 않기 때문에 CursorType 매개변수를 이해하지 못하기 때문입니다.
recordset.오픈 소스, ActiveConnection, CursorType, LockType, 옵션
Recordset 개체는 Source 속성을 통해 Command 개체에 연결할 수 있습니다. Source 매개변수는 명령 개체 이름, SQL 명령, 지정된 데이터 테이블 이름 또는 저장 프로시저일 수 있습니다. 이 매개 변수를 생략하면 시스템은 Recordset 개체의 Source 속성을 사용합니다. ActiveConnection
Recordset 개체는 ActiveConnection 속성을 통해 Connection 개체에 연결할 수 있습니다. 여기서 ActiveConnection은 연결 개체이거나
데이터베이스
연결 정보(ConnectionString)가 포함된 문자열 매개 변수 문자열일 수 있습니다 .CursorType
Recordset 개체의 Open 메서드에 대한 CursorType 매개 변수는다음과 같이 설명되는 adOpenForwardOnly, adOpenKeyset, adOpenDynamic 및 ad OpenStatic을
포함
하여 데이터가 시작될 커서 유형을 나타냅니다
.------- ----------------- -----
상수 상수값
설명- --------------------------- ---------- ----------
adOpenForwardOnly 0 기본값, 앞으로만 이동할 수 있는 커서를 시작합니다(앞으로만).
adOpenKeyset 1은 Keyset 유형 커서를 시작합니다.
adOpenDynamic 2는 동적 유형 커서를 시작합니다.
adOpenStatic 3은 정적 유형 커서를 시작합니다.
------------------------------------- -----------
위의 커서 유형은 Recordset 개체의 모든 속성과 메서드에 직접적인 영향을 미칩니다. 다음 목록에서는 이들 간의 차이점을 설명합니다.
레코드세트 속성 adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic
AbsolutePage 지원되지 않음 지원되지 않음 읽기 및 쓰기 가능 읽기 및 쓰기 가능
AbsolutePosition 지원되지 않음 지원되지 않음 읽기 및 쓰기 가능 읽기 및 쓰기 가능
BOF 읽기 전용 읽기 전용 읽기 전용
CursorType 읽기-쓰기 읽기-쓰기 읽기-쓰기 읽기-쓰기
EOF 읽기 전용 읽기 -전용 읽기 전용
필터 읽기 및 쓰기 읽기 및 쓰기 읽기 및 쓰기 읽기 및 쓰기
LockType 읽기 및 쓰기 읽기 및 쓰기 읽기 및 쓰기 읽기 및 쓰기
PageCount 지원되지 않음 읽기 전용 읽기 전용
PageSize 읽기 및 쓰기 읽기 및 쓰기 읽기 및 쓰기 읽기 Write
RecordCount 지원되지 않음 지원되지 않음 읽기 전용 읽기 전용
AddNew 지원 지원 지원 지원
CancelBatch 지원 지원 지원 지원 CancelUpdate 지원
지원 지원
지원 닫기 지원 지원 지원 지원 지원 지원
삭제 지원 지원 지원 지원 지원 지원 지원 이동 지원
지원되지 않음 지원 지원 지원 지원
MoveFirst 지원 지원 지원 지원 지원
MoveLast 지원되지 않음 지원 지원 지원
지원 MoveNext 지원 지원 지원 지원
MovePrevious 지원되지 않음 지원 지원 지원
오픈 지원 지원 지원 업데이트 지원 지원 지원 지원
업데이트Batch 지원 지원 지원
지원
------ --------- --------------- ---------
Recordset 개체의 Open 메서드의 LockType 매개 변수는 Lock 유형을 나타냅니다. 이 매개 변수가 생략되면 시스템은 Recordset 개체의 LockType 속성을 기본값으로 사용합니다. LockType 매개변수에는 adLockReadOnly, adLockPrssimistic, adLockOptimistic 및 adLockBatchOptimistic 등이 포함되며 이에 대한 설명은 다음과 같습니다.
상수 값 설명
--------------------------- ------ ------
adLockReadOnly 1 기본값, Recordset 개체는 읽기 모드에서 시작됩니다. -전용 모드이며 AddNew, Update 및 Delete 메소드를 실행할 수 없습니다.
adLockPrssimistic 2 데이터 소스가 업데이트되는 동안 시스템은 데이터 일관성을 유지하기 위해 다른 사용자의 작업을 일시적으로 잠급니다.
adLockOptimistic 3 데이터 소스가 업데이트되는 동안 시스템은 다른 사용자의 작업을 잠그지 않으며 다른 사용자가 데이터를 추가, 삭제, 수정할 수 있습니다.
adLockBatchOptimistic 4 데이터 소스가 업데이트되는 동안 다른 사용자는 CursorLocation 속성을 adUdeClientBatch로 변경하여 데이터를 추가, 삭제 또는 수정해야 합니다.
참고할 사항은 다음과 같습니다.
데이터 소스가 레코드를 반환하지 않으면 공급자는 BOF 및 EOF 속성을 모두 True로 설정하고 현재 레코드 위치를 정의하지 않습니다. 커서 유형이 허용하는 경우 빈 Recordset 개체에 새 데이터를 계속 추가할 수 있습니다.