ADO 런타임 오류
ADO 오류는 런타임 오류로 프로그램에 보고됩니다. 프로그래밍 언어의 오류 트래핑 메커니즘을 사용하여 트래핑하고 처리할 수 있습니다. 예를 들어 Visual Basic에서는 On Error 문을 사용합니다. Visual C++에서는 ADO 라이브러리에 액세스하는 데 사용하는 방법에 따라 달라집니다. #import와 함께 try-catch 블록을 사용합니다. 그렇지 않으면 C++ 프로그래머는 GetErrorInfo를 호출하여 오류 개체를 명시적으로 검색해야 합니다. 다음 Visual Basic 하위 절차에서는 ADO 오류를 트래핑하는 방법을 보여 줍니다.
' BeginErrorHandlingVB01
Private Sub Form_Load()
' Turn on error handling
On Error GoTo FormLoadError
'Open the database and the recordset for processing.
'
Dim strCnn As String
strCnn = "Provider=sqloledb;" & _
"Data Source=a-iresmi2000;" & _
"Initial Catalog=Northwind;Integrated Security=SSPI"
' cnn is a Public Connection Object because
' it was defined WithEvents
Set cnn = New ADODB.Connection
cnn.Open strCnn
' The next line of code intentionally causes
' an error by trying to open a connection
' that has already been opened.
cnn.Open strCnn
' rst is a Public Recordset because it
' was defined WithEvents
Set rst = New ADODB.Recordset
rst.Open "Customers", cnn
Exit Sub
' Error handler
FormLoadError:
Dim strErr As String
Select Case Err
Case adErrObjectOpen
strErr = "Error #" & Err.Number & ": " & Err.Description & vbCrLf
strErr = strErr & "Error reported by: " & Err.Source & vbCrLf
strErr = strErr & "Help File: " & Err.HelpFile & vbCrLf
strErr = strErr & "Topic ID: " & Err.HelpContext
MsgBox strErr
Debug.Print strErr
Err.Clear
Resume Next
' If some other error occurs that
' has nothing to do with ADO, show
' the number and description and exit.
Case Else
strErr = "Error #" & Err.Number & ": " & Err.Description & vbCrLf
MsgBox strErr
Debug.Print strErr
Unload Me
End Select
End Sub
' EndErrorHandlingVB01
이 Form_Load 이벤트 프로시저는 동일한 Connection 개체를 두 번 열어 의도적으로 오류를 만듭니다. Open 메서드가 두 번째로 호출되면 오류 처리기가 활성화됩니다. 이 경우 오류는 adErrObjectOpen 형식이므로 프로그램 실행을 다시 시작하기 전에 오류 처리기에 다음 메시지가 표시됩니다.
Error #3705: Operation is not allowed when the object is open.
Error reported by: ADODB.Connection
Help File: E:\WINNT\HELP\ADO260.CHM Topic ID: 1003705
오류 메시지에는 여기에 적용되지 않는 LastDLLError 값을 제외하고 Visual Basic Err 개체에서 제공하는 각 정보가 포함됩니다. 오류 번호는 발생한 오류를 알려줍니다. 설명은 오류를 직접 처리하지 않으려는 경우에 유용합니다. 사용자에게 전달할 수 있습니다. 일반적으로 애플리케이션에 사용자 지정된 메시지를 사용하려고 하지만 모든 오류를 예상할 수는 없습니다. 설명은 무엇이 잘못되었는지에 대한 단서를 제공합니다. 샘플 코드에서 Connection 개체에 의해 오류가 보고되었습니다. 변수 이름이 아닌 개체의 형식 또는 프로그래밍 ID가 여기에 표시됩니다.
참고 항목
Visual Basic Err 개체에는 가장 최근의 오류에 대한 정보만 포함됩니다. Connection 개체의 ADO Errors 컬렉션에는 가장 최근 ADO 작업에서 발생한 각 오류에 대해 하나의 Error 개체가 포함됩니다. Err 개체가 아닌 Errors 컬렉션을 사용하여 여러 오류를 처리합니다. Errors 컬렉션에 대한 자세한 내용은 공급자 오류를 참조하세요. 그러나 유효한 Connection 개체가 없는 경우 Err 개체는 ADO 오류 정보의 유일한 원본입니다.
ADO 오류를 일으킬 가능성이 있는 작업의 종류는 무엇인가요? 일반적인 ADO 오류에는 Connection 또는 Recordset와 같은 개체를 열거나, 데이터를 업데이트하려고 시도하거나, 공급자가 지원하지 않는 메서드 또는 속성을 호출하는 작업이 포함될 수 있습니다.
OLE DB 오류는 Errors 컬렉션에서 런타임 오류로 애플리케이션에 전달될 수도 있습니다.
다음 항목에서는 ADO 오류에 대한 자세한 정보를 제공합니다.