Web/ASP & ASP.NET2009. 4. 10. 23:50

< 출처 : korea.internet.com, 지은이 : 최현진 >

Disconnected Recordset은 Recordset 개체를 생성한 후에 데이터 원본과의 연결을 명시적으로 끊은 상태에서 Recordset 개체를 사용할 수 있도록 지원하는 특수한 형태의 Recordset 개체이다.

이 방식은 데이터 원본과의 연결이 불안정할 때 유용하게 사용될 수 있다.

Disconnected Recordset을 생성할 경우에는 반드시 Recordset 개체의 CursorLocation 속성을 adUseClient로 설정해야만 한다. 그리고 Recordset 개체의 LockType 속성은 배치로 작업이 이루어지기 때문에 adLockBatchOptimistic(4)으로 설정하는 것이 좋다.

Pubs 데이터베이스의 Authors 테이블에 대한 Recordset 개체를 생성하고, 화면에 표시하는 예제를 Disconnected Recordset으로 작성한다.

비주얼 베이직에서 새로운 프로젝트를 시작하고, 폼을 추가해서 다음과 같이 디자인한다.



[그림] Disconnected Recordset 예제 화면


개체 속성
Form Name frmDisconnectedRs
Caption Disconnected Recordset
CommandButton Name cmdFirst
Caption First
CommandButton Name cmdPrev
Caption Prev
CommandButton Name cmdNext
Caption Next
CommandButton Name cmdLast
Caption Last
CommandButton Name cmdOpen
Caption Open
CommandButton Name cmdDisconnect
Caption Disconnect
TextBox Name txtData
Text ""


ADO를 사용하기 위해서 비주얼 베이직의 프로젝트 메뉴의 참조에서 Microsoft ActiveX Data Objects 2.5 Library를 참조한다.

폼의 코드 모듈에 다음과 같이 코드를 작성한다.

Option Explicit

Dim adoCn As Connection
Dim adoRs As Recordset

Private Sub cmdDisconnect_Click()
  Set adoRs.ActiveConnection = Nothing

  adoCn.Close
  Set adoCn = Nothing
End Sub

Private Sub cmdFirst_Click()
  adoRs.MoveFirst

  txtData = adoRs(0)
End Sub

Private Sub cmdLast_Click()
  adoRs.MoveLast

  txtData = adoRs(0)
End Sub

Private Sub cmdNext_Click()
  adoRs.MoveNext

  If adoRs.EOF Then
    adoRs.MoveLast

  txtData = adoRs(0)
End Sub

Private Sub cmdOpen_Click()
  Set adoCn = New Connection
  adoCn.Open "Provider=sqloledb;Data Source=(local);Initial Catalog=Pubs;User ID=sa;Password=;"

  Set adoRs = New Recordset
  adoRs.CursorLocation = adUseClient
  adoRs.Open "Select * from Authors", adoCn, adOpenStatic, adLockOptimistic
End Sub

Private Sub cmdPrev_Click()
  adoRs.MovePrevious

  If adoRs.BOF Then
    adoRs.MoveFirst

  txtData = adoRs(0)
End Sub

예제 응용 프로그램을 실행하고, Open 버튼을 클릭해서 Recordset 개체를 생성한다. Disconnect 버튼을 클릭해서 데이터 원본과의 연결을 끊는다. 그런 후에도 First, Next 와 같은 이동 버튼을 사용해서 Recordset 개체에 포함된 데이터를 읽어 올 수 있다. 이런 상태의 Recordset 개체를 Disconnected Recordset 이라고 한다.

이 기능은 영업 사원들이 주로 사용하는 Sales Automation 응용 프로그램을 구현할 때 적합하다. 예를 들어, 영업 사원은 외부에서 전화로 회사에 접속한 다음에 Disconnected Recordset 기능으로 데이터를 클라이언트로 내려 받는다. 그런 다음에 전화 접속을 끊는다. 고객과 충분한 상담을 한 후에 다시 전화로 본사 시스템에 접속해서 변경한 데이터들을 데이터베이스에 반영한다.

위의 예와 같이 네트워크가 불안정한 경우에는 흔히 로컬에 데이터베이스를 두고, 서버의 데이터베이스와 함께 데이터를 공유하도록 처리하였지만, Disconnected Recordset을 사용하면 이런 시나리오의 응용 프로그램을 별도의 추가 작업 없이 쉽게 구현할 수 있다.
Posted by Huikyun