共用方式為


ADO Run-Time 錯誤

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

錯誤訊息包含 Visual Basic Err 物件所提供的每一項資訊,但 LastDLLError 值除外,此處不適用。 錯誤號碼會告訴您發生哪一個錯誤。 在不想自行處理錯誤的情況下,描述很有用。 您可以直接將它傳遞至使用者。 雖然您通常想要使用為應用程式自定義的訊息,但無法預期每個錯誤;描述提供了一些線索,說明出了什麼問題。 在範例程式代碼中,Connection 對象回報錯誤。 您會在這裡看到物件的類型或程式設計標識元,而不是變數名稱。

注意

Visual Basic Err 物件只包含最新錯誤的相關信息。 Connection 物件的 ADO Errors 集合包含最近 ADO 作業所引發之每個錯誤的 Error 物件。 使用 Errors 集合,而不是 Err 對象來處理多個錯誤。 如需更多有關 錯誤 集合的資訊,請參閱 提供者錯誤。 不過,如果沒有有效的 Connection 物件,Err 物件是 ADO 錯誤資訊的唯一來源。

哪些作業可能會造成 ADO 錯誤? 常見的 ADO 錯誤可能包括開啟物件,例如 ConnectionRecordset、嘗試更新數據,或呼叫提供者不支援的方法或屬性。

OLE DB 錯誤也可以當做 Errors 集合中的運行時錯誤傳遞給您的應用程式。

下列主題提供 ADO 錯誤的詳細資訊。