Πώς μπορείτε να ανοίξετε τα αντικείμενα σύνδεσης και Recordset του ADO


Για μια έκδοση αυτού του άρθρου που αφορά τη Microsoft Visual Basic .NET, ανατρέξτε στο θέμα 310985 .

Σύνοψη


Τα αντικείμενα δεδομένων ActiveX (ADO) προσφέρουν διάφορους τρόπους για να ανοίξετε τα αντικείμενα Connection και Recordset. Αυτό το άρθρο παρουσιάζει δείγμα κώδικα για διάφορες συνήθεις τεχνικές για κάθε αντικείμενο.

Περισσότερες πληροφορίες


Υπάρχουν διάφοροι τρόποι για να ανοίξετε ένα αντικείμενο Connection μέσα στα ADO:
  • Ορίζοντας την ιδιότητα ConnectionString σε μια έγκυρη συμβολοσειρά σύνδεσης και, στη συνέχεια, καλώντας τη μέθοδο Open (). Αυτή η συμβολοσειρά σύνδεσης εξαρτάται από την υπηρεσία παροχής.
  • Μεταβιβάζοντας μια έγκυρη συμβολοσειρά σύνδεσης στο πρώτο όρισμα της μεθόδου Open ().
  • Μεταβιβάζοντας ένα έγκυρο αντικείμενο Command στο πρώτο όρισμα της μεθόδου Open ενός συνόλου εγγραφών.
  • Μεταβιβάζοντας το όνομα του αρχείου προέλευσης δεδομένων ODBC και προαιρετικά το αναγνωριστικό χρήστη και τον κωδικό πρόσβασης στη μέθοδο Open () του αντικειμένου Connection.
Υπάρχουν τρεις τρόποι για να ανοίξετε ένα αντικείμενο Recordset μέσα στα ADO:
  • Ανοίγοντας το σύνολο εγγραφών εκτός της μεθόδου Connection. Execute ().
  • Ανοίγοντας το σύνολο εγγραφών εκτός της μεθόδου Command. Execute ().
  • Με το άνοιγμα του αντικειμένου Recordset χωρίς σύνδεση ή αντικείμενο Command και με τη διαβίβαση μιας έγκυρης συμβολοσειράς σύνδεσης στο δεύτερο όρισμα της μεθόδου Recordset. Open ().
Αυτός ο κωδικός υποθέτει ότι το Nwind. mdb είναι εγκατεστημένο με τη Visual Basic και βρίσκεται στον κατάλογο Files\DevStudio\VB του c:
   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

ΣΗΜΕΙΏΣΕΙς ΣΦΆΛΜΑΤΟς

Μόνο το αντικείμενο Connection του ADO έχει μια συλλογή σφαλμάτων. Το πρόγραμμα ανάγνωσης με παρακολούθηση θα παρατηρήσει ότι ένα ελαφρύ πρόγραμμα χειρισμού σφαλμάτων είναι σε ισχύ για τα παραδείγματα RecordSet. Open. Σε περίπτωση σφάλματος κατά το άνοιγμα ενός αντικειμένου RecordSet, το ADO θα πρέπει να επιστρέψει το πιο ρητό σφάλμα από την υπηρεσία παροχής OLEDB. Ακολουθούν ορισμένα συνηθισμένα σφάλματα που μπορούν να παρουσιαστούν με τον προηγούμενο κώδικα. Εάν παραλείψετε (ή υπάρχει σφάλμα in) η παράμετρος DefaultDir στη συμβολοσειρά σύνδεσης, ενδέχεται να εμφανιστεί το ακόλουθο σφάλμα:
Σφάλμα ADO #-2147467259 Περιγραφή [Microsoft] [ODBC Microsoft Access 97 Driver] ' (άγνωστη) ' δεν είναι έγκυρη διαδρομή. Βεβαιωθείτε ότι το όνομα της διαδρομής είναι σωστά γραμμένο και ότι είστε συνδεδεμένοι με το διακομιστή στον οποίο βρίσκεται το αρχείο. Προέλευση υπηρεσίας παροχής Microsoft OLE DB για προγράμματα οδήγησης ODBC
Εάν υπάρχει σφάλμα στην παράμετρο DBQ στη συμβολοσειρά σύνδεσης, ενδέχεται να εμφανιστεί το ακόλουθο σφάλμα:
Σφάλμα ADO #-2147467259 Περιγραφή [Microsoft] [ODBC Microsoft Access 97 Driver] δεν ήταν δυνατή η εύρεση του αρχείου ' (άγνωστη) '. Προέλευση υπηρεσίας παροχής Microsoft OLE DB για προγράμματα οδήγησης ODBC
Τα προηγούμενα σφάλματα συμπληρώνονται επίσης στη συλλογή Connection. Errors με τα παρακάτω σφάλματα:
Σφάλμα ADO #-2147467259 Περιγραφή [Microsoft] [Διαχείριση προγραμμάτων οδήγησης ODBC] SQLSetConnectAttr αποτυχημένη προέλευση του προγράμματος παροχής Microsoft OLE DB για προγράμματα οδήγησης ODBC
Σφάλμα ADO #-2147467259 Περιγραφή η σύνδεση απέτυχε από την υπηρεσία παροχής Microsoft OLE DB για προγράμματα οδήγησης ODBC
Σημειώστε ότι για κάθε σφάλμα, ο αριθμός σφάλματος του ADO είναι ο ίδιος, σε αυτήν την περίπτωση μεταφράζοντας το 0x80004005, το οποίο είναι το γενικό E_FAIL μήνυμα σφάλματος. Το υποκείμενο στοιχείο δεν είχε συγκεκριμένο αριθμό σφάλματος για τη Συνθήκη που αντιμετώπισε, αλλά οι χρήσιμες πληροφορίες δεν αυξήθηκαν ποτέ στα ADO.

Αναφορές


Για πρόσθετες πληροφορίες, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
301216 Πώς μπορείτε να συμπληρώσετε ένα αντικείμενο DataSet από μια βάση δεδομένων με τη χρήση της Visual Basic .NET
Για περισσότερες πληροφορίες, κάντε κλικ στους αριθμούς των άρθρων παρακάτω, για να προβάλετε τα άρθρα στη Γνωσιακή βάση της Microsoft:
188857 PRB: Χρησιμοποιήστε τη μέθοδο Open για να αλλάξετε το CursorType και το LockType
194979 ΠΛΗΡΟΦΟΡΙεσ: το ADO γεννά πρόσθετες συνδέσεις με τον SQL Server
168335 ΠΛΗΡΟΦΟΡΊΕς: χρήση αντικειμένων δεδομένων ActiveX (ADO) μέσω της Visual Basic
193332 ΑΡΧΕΊΟ: MDACCON. EXE με τη χρήση συμβολοσειρών σύνδεσης με ODBC/OLEDB/ADO/RDS