Web/ASP & ASP.NET2009. 4. 9. 22:40

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

Errors 컬렉션

Errors 컬렉션은 Command 개체의 하위에 존재하는 컬렉션으로서 Data Provider가 생성하는 모든 오류 또는 경고에 대한 정보를 가지고 있는 컬렉션이다.



[그림] Errors 컬렉션과 Error 개체


비주얼 베이직에서 ODBC를 통해서 데이터베이스의 데이터를 처리할 때, 기존의 RDO 또는 DAO를 사용하는 경우에는 대부분의 오류 메시지가 오류 번호 40002 번의 ODBC 오류 메시지로 처리되었다. 그 이유는 비주얼 베이직의 Err 개체는 가장 최근에 발생한 오류에 대한 정보만을 가지고 있으며, ODBC를 사용해서 작업할 경우에 데이터베이스와 관련된 오류가 발생하면 항상 제일 마지막에 ODBC 오류가 발생하기 때문이다. 그렇기 때문에 개발자들은 오류가 발생하면 명확하게 어느 부분에서 오류가 발생하였는지를 알기가 어려웠다.

반면에 ADO의 Errors 컬렉션을 사용하면 어느 부분에서 어떤 오류들이 발생하였는지를 명확하게 알 수 있다. Connection 개체를 사용하면 Err 개체가 오류를 인지할 때마다 Errors 컬렉션에 오류에 대한 정보를 추가하게 된다.

Errors 컬렉션에 포함된 오류에 대한 정보는 다음과 같은 코드로 읽을 수 있다.

  Dim adoCn As New ADODB.Connection
  Dim adoErr As ADODB.Error

  For Each adoErr In adoCn.Errors
    Print adoErr.Description
  Next


Errors 컬렉션의 속성


속성 설명 기본값 데이터 형식
Count 컬렉션에 포함된 Error 개체의 개수를 나타낸다. 0 Long
Item 이름이나 인덱스를 사용해서 Errors 컬렉션에서 특정 Error 구성원을 반환한다. 없음 Error



Count 속성

Count 속성은 주어진 Errors 컬렉션에 들어 있는 Error 개체의 수를 결정하는 속성이다. 컬렉션의 구성원 수를 셀 때는 0부터 시작하기 때문에 루프 코드를 작성할 때는 항상 구성원을 0번부터 시작하고 Count 속성에서 1을 뺀 값으로 끝나야 합니다. 비주얼 베이직을 사용하는 경우 Count 속성을 확인하지 않고 컬렉션의 구성원들을 루프로 반복 처리하려면 For Each...Next 명령을 사용한다. Count 속성이 0이면 컬렉션에 개체가 존재하지 않는 것이다.

[예제]
다음 예제는 오류가 발생한 경우에 직접 실행창에 Errros 컬렉션의 Count 속성을 사용해서 발생한 모든 오류 메시지를 표시하는 예이다.

Private Sub cmdCount_Click()
  Dim adoCn As New ADODB.Connection
  Dim strConn As String
  Dim i As Integer

  On Error GoTo ErrTrap

  strConn = "Provider=sqloledb;Data Source=(local);Initial Catalog=Pubs;User Id=sa;Password=;"
  adoCn.Open strConn

  adoCn.Close
  Set adoCn = Nothing
Exit Sub

ErrTrap:
  For i = 0 To adoCn.Errors.Count - 1
    Debug.Print adoCn.Errors(i).Description
  Next i
End Sub


Item 속성

Item 속성은 이름이나 서수를 사용하여 Errors 컬렉션의 특정 Error 구성원을 반환하며, 구문은 다음과 같다.

Set adoErr = adoCn.Errors.Item(Index)

매개변수 Index는 컬렉션에 들어 있는 개체의 이름이나 개체의 위치 순서를 나타내는 서수로 평가되는 Variant 값이다.

Item 메서드는 Errors 컬렉션의 기본 속성이며, 다음과 같은 구문을 모두 사용할 수 있다.

Errors.Item(Index)
Errors(Index)



Errors 컬렉션의 메서드


메서드 설명
Clear Errors 컬렉션에서 모든 Error 개체를 제거한다.
Refresh Provider로부터 Error 개체들의 정보를 갱신한다.



Clear 메서드

Clear 메서드는 Errors 컬렉션에서 모든 Error 개체를 제거하며, 구문은 다음과 같다.

Errors.Clear


Errors 컬렉션에서 기존의 모든 Error 개체를 제거하려면 Clear 메서드를 사용합니다. 오류가 발생하면 ADO는 자동으로 Errors 컬렉션을 지우고 새 오류에 기초하여 이 컬렉션에 Error 개체들을 채운다.


Refresh 메서드

Refresh 메서드는 Provider로부터 Error 개체들의 정보를 갱신하며, 구문은 다음과 같다.

adoCn.Errors.Refresh


이 메서드는 Errors 컬렉션이 Provider로부터 제공되는 최신의 Error 정보를 가지고 있도록 하기 위해 사용될 수 있다.

Posted by Huikyun