ASP에서 보통 레코드셋을 사용할 때
Rs.Open sql, con, 3, 1
와 같이 써주고 사용한다.(물론 위에서 레코드셋을 생성해 주어야 겠지..) 무슨 말인지도 모르면서 그냥 사용하고 있기는 하지만 왜 이렇게 사용하는 지를 아는 것은 꽤나 중요하다고 생각한다. 어느 랭귀지 에서나....
이걸 풀어쓰면....
Rs.Open Source, ActiveConnection, CursorType, LockType, Options
이다. Source는 실행할 SQL문을 뜻하고 ActiveConnection은 사용할 커넥션이다. 그렇게 보면 3은 CursorType이고 1은 LockType라는 뜻이다. 그럼 이게 뭔데 3,1로 사용하냐는 거지... ㅎ
아래는 C:/Program Files/Common Files/System/ado/adovbs.inc 파일을 오픈한 것이다. 이곳에 커서타입과 락타입의 값들이 상수로 정의 되어 있고 이에 근거하며 3과 1이라는 숫자를 사용한 것이다.
CursorType
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3
커서는 레코드셋의 한 Row를 가르키는 커서(?)이다. 이 커서의 성격을 정해주는 것이다. adOpenForwardOnly는 커서가 앞으로만 갈 수 있고 adOpenKeyset는 동적으로 움직일 수 있지만 변경한 내용에는 접근할 수 없다.
adOpenDynamic는 원하는대로 이동이 가능하고 변경된 내용도 접근이 가능하기 때문에 중간에 다른 사용자가 수정한 데이터도 문제없이 확인이 가능하다. adOpenStatic은 앞뒤로 이동이 가능하다.
레코드셋의 사용용도에 따라 커서를 결정해 주면 성능을 향상 시킬수 있다.
LockType
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Const adLockBatchOptimistic = 4
락타입은 레코드셋을 잠그는 타입을 지정하는 옵션이다. 즉, 레코드셋을 가져온 클라이언트쪽(서버)에서 데이터의 수정에 대한 부분을 결정하게 된다.
adLockReadOnly는 읽기만이 가능하며, adLockPessimistic은 레코드셋을 통한 업데이트가 가능하고 사용하는 동안 다른 사용자가 변경을 할 수가 없으며 adLockOptimistic은 레코드셋을 통한 업데이트는 가능하지만 데이터를 잠그지는 않고 오직 Update를 실행하는 순간에만 잠그게 된다. adLockBatchOptimistic은 여러개의 레코드를 업데이트될 경우에만 잠그게 된다.
이렇게 보면 보통 사용하는 3, 1은 앞뒤로 이동가능한 커서타입에 리드온니로 레코드셋을 사용한다는 뜻이다.
맨위에 써 놓았듯이 여기서도 명령어 맨뒤에 Option을 사용할 수 있고 이 옵션은 지난 번 포스팅에서 설명한 옵션과 동일하다. 즉 일반적인 sql문으로 레코드셋을 연다면
Rs.Open sql, con, 3, 1, adCmdText
라고 써주는 것도 가능하고 숫자대신 명시적으로 문자열로 지정하는 것도 가능하다..
Rs.Open sql, con, adOpenStatic, adLockReadOnly
라고 작성해도 동일하다.
Comments