Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird erläutert, wie ADO-Verbindungs- und Recordset-Objekte geöffnet werden.
Ursprüngliche Produktversion: SQL Server
Ursprüngliche KB-Nummer: 168336
Zusammenfassung
ActiveX Data Objects (ADO) bietet mehrere Möglichkeiten zum Öffnen der Connection- und Recordset-Objekte. In diesem Artikel finden Sie Beispielcode für verschiedene gängige Techniken für jedes Objekt.
Weitere Informationen
Es gibt mehrere Möglichkeiten, ein Connection-Objekt in ADO zu öffnen:
- Durch Festlegen der
ConnectionString
Eigenschaft auf eine gültige Connect-Zeichenfolge und anschließendes Aufrufen derOpen()
Methode. Diese Verbindungszeichenfolge ist vom Anbieter abhängig. - Durch Übergeben einer gültigen Connect-Zeichenfolge an das erste Argument der
Open()
Methode. - Durch Übergeben eines gültigen Command-Objekts an das erste Argument der Open-Methode eines Recordset-Objekts.
- Durch Übergeben des ODBC-Datenquellennamens und optional der Benutzer-ID und des Kennworts an die Methode des
Open()
Connection-Objekts.
Es gibt drei Möglichkeiten zum Öffnen eines Recordset-Objekts in ADO:
- Durch Öffnen des Recordset-Objekts aus der
Connection.Execute()
Methode. - Durch Öffnen des Recordset-Objekts aus der
Command.Execute()
Methode. - Durch Öffnen des Recordset-Objekts ohne Connection- oder Command-Objekt und Übergeben einer gültigen Connect-Zeichenfolge an das zweite Argument der
Recordset.Open()
Methode.
In diesem Code wird davon ausgegangen, dass Nwind.mdb mit Visual Basic installiert ist und sich in der Datei C:\Program Files\DevStudio\VB directory
befindet:
Option Explicit
Private Sub cmdOpen_Click()
Dim Conn1 As New adodb.Connection
Dim Cmd1 As New adodb.Command
Dim Errs1 As Errors
Dim Rs1 As New adodb.Recordset
Dim i As Integer
Dim AccessConnect As String
' Error Handling Variables
Dim errLoop As Error
Dim strTmp As String
AccessConnect = "Driver={Microsoft Access Driver (*.mdb)};" & _
"Dbq=nwind.mdb;" & _
"DefaultDir=C:\program files\devstudio\vb;" & _
"Uid=Admin;Pwd=;"
'---------------------------
' Connection Object Methods
'---------------------------
On Error GoTo AdoError ' Full Error Handling which traverses
' Connection object
' Connection Open method #1: Open via ConnectionString Property
Conn1.ConnectionString = AccessConnect
Conn1.Open
Conn1.Close
Conn1.ConnectionString = ""
' Connection Open method #2: Open("[ODBC Connect String]","","")
Conn1.Open AccessConnect
Conn1.Close
' Connection Open method #3: Open("DSN","Uid","Pwd")
Conn1.Open "Driver={Microsoft Access Driver (*.mdb)};" & _
"DBQ=nwind.mdb;" & _
"DefaultDir=C:\program files\devstudio\vb;" & _
"Uid=Admin;Pwd=;"
Conn1.Close
'--------------------------
' Recordset Object Methods
'--------------------------
' Don't assume that we have a connection object.
On Error GoTo AdoErrorLite
' Recordset Open Method #1: Open via Connection.Execute(...)
Conn1.Open AccessConnect
Set Rs1 = Conn1.Execute("SELECT * FROM Employees")
Rs1.Close
Conn1.Close
' Recordset Open Method #2: Open via Command.Execute(...)
Conn1.ConnectionString = AccessConnect
Conn1.Open
Cmd1.ActiveConnection = Conn1
Cmd1.CommandText = "SELECT * FROM Employees"
Set Rs1 = Cmd1.Execute
Rs1.Close
Conn1.Close
Conn1.ConnectionString = ""
' Recordset Open Method #3: Open via Command.Execute(...)
Conn1.ConnectionString = AccessConnect
Conn1.Open
Cmd1.ActiveConnection = Conn1
Cmd1.CommandText = "SELECT * FROM Employees"
Rs1.Open Cmd1
Rs1.Close
Conn1.Close
Conn1.ConnectionString = ""
' Recordset Open Method #4: Open w/o Connection & w/Connect String
Rs1.Open "SELECT * FROM Employees", AccessConnect, adOpenForwardOnly
Rs1.Close
Done:
Set Rs1 = Nothing
Set Cmd1 = Nothing
Set Conn1 = Nothing
Exit Sub
AdoError:
i = 1
On Error Resume Next
' Enumerate Errors collection and display properties of
' each Error object (if Errors Collection is filled out)
Set Errs1 = Conn1.Errors
For Each errLoop In Errs1
With errLoop
strTmp = strTmp & vbCrLf & "ADO Error # " & i & ":"
strTmp = strTmp & vbCrLf & " ADO Error # " & .Number
strTmp = strTmp & vbCrLf & " Description " & .Description
strTmp = strTmp & vbCrLf & " Source " & .Source
i = i + 1
End With
Next
AdoErrorLite:
' Get VB Error Object's information
strTmp = strTmp & vbCrLf & "VB Error # " & Str(Err.Number)
strTmp = strTmp & vbCrLf & " Generated by " & Err.Source
strTmp = strTmp & vbCrLf & " Description " & Err.Description
MsgBox strTmp
' Clean up gracefully without risking infinite loop in error handler
On Error GoTo 0
GoTo Done
End Sub
FEHLERHINWEISE
Nur das ADO Connection -Objekt verfügt über eine Fehlerauflistung. Der observante Reader wird feststellen, dass ein einfacher Fehlerhandler für die RecordSet.Open
Beispiele wirksam ist. Im Falle eines Fehlers beim Öffnen eines RecordSet-Objekts sollte ADO den explizitsten Fehler des OLEDB-Anbieters zurückgeben. Einige häufige Fehler, die mit dem vorherigen Code auftreten können.
Wenn Sie den Parameter DefaultDir in der Verbindungszeichenfolge weglassen (oder einen Fehler enthält), wird möglicherweise der folgende Fehler angezeigt:
ADO-Fehler # -2147467259
Beschreibung [Microsoft][ODBC Microsoft Access 97-Treiber] '(unbekannt)'
ist kein gültiger Pfad. Stellen Sie sicher, dass der Pfadname
richtig geschrieben und mit dem Server verbunden sind
auf dem sich die Datei befindet.
Microsoft OLE DB-Quellanbieter für ODBC-Treiber
Wenn der Dbq-Parameter in der Verbindungszeichenfolge einen Fehler enthält, wird möglicherweise die folgende Fehlermeldung angezeigt:
ADO-Fehler # -2147467259 Beschreibung [Microsoft][ODBC Microsoft Access 97-Treiber] Die Datei "(unbekannt)" konnte nicht gefunden werden.
Microsoft OLE DB-Quellanbieter für ODBC-Treiber
Die vorstehenden Fehler füllen auch die Sammlung von Verbindungsfehlern mit den folgenden Fehlern auf:
ADO-Fehler # -2147467259
Beschreibung [Microsoft][ODBC-Treiber-Manager] Treiber
SQLSetConnectAttr fehlgeschlagen
Microsoft OLE DB-Quellanbieter für ODBC-Treiber
ADO-Fehler # -2147467259
Fehler bei der Beschreibungsanmeldung
Microsoft OLE DB-Quellanbieter für ODBC-Treiber
Notiz
Für jeden Fehler ist die ADO-Fehlernummer identisch, in diesem Fall wird in 0x80004005 übersetzt, was die generische E_FAIL Fehlermeldung ist. Die zugrunde liegende Komponente hat keine bestimmte Fehlernummer für die aufgetretene Bedingung, aber nützliche Informationen wurden nie von weniger auf ADO ausgelöst.