ADO bağlantısını ve Recordset nesnelerini açma
Bu makalede, ADO bağlantısının ve Recordset nesnelerinin nasıl açılıp açılmayacakları anlatı.
Özgün ürün sürümü: SQL Server
Özgün KB numarası: 168336
Özet
ActiveX Veri Nesneleri (ADO), hem Connection hem de Recordset nesnelerini açmak için çeşitli yollar sunar. Bu makalede, her nesne için çeşitli yaygın teknikler için örnek kod gösterilir.
Daha fazla bilgi
ADO içinde Bağlantı Nesnesi açmanın birkaç yolu vardır:
- Özelliğini geçerli bir Connect dizesine ayarlayıp
ConnectionString
yöntemini çağırarakOpen()
. Bu bağlantı dizesi sağlayıcıya bağımlıdır. - Yönteminin ilk bağımsız değişkenine
Open()
geçerli bir Connect dizesi geçirerek. - Kayıt Kümesinin Open yönteminin ilk bağımsız değişkenine geçerli bir Command nesnesi geçirerek.
- ODBC Veri kaynağı adını ve isteğe bağlı olarak user-id ve parolayı Bağlantı Nesnesinin
Open()
yöntemine geçirerek.
ADO içinde bir Recordset Nesnesi açmanın üç yolu vardır:
- Recordset'i yönteminin dışına
Connection.Execute()
açarak. - Recordset'i yönteminin dışına
Command.Execute()
açarak. - Recordset nesnesini Connection veya Command nesnesi olmadan açarak ve yönteminin ikinci bağımsız değişkenine
Recordset.Open()
geçerli bir Connect dizesi geçirerek.
Bu kod, Nwind.mdb Visual Basic ile yüklendiğini ve içinde C:\Program Files\DevStudio\VB directory
bulunduğunu varsayar:
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
HATA NOTLARI
Yalnızca ADO Bağlantısı nesnesinin bir hata koleksiyonu vardır. Gözlemleyici okuyucu, örnekler için basit bir hata işleyicisinin RecordSet.Open
etkin olduğunu fark eder. RecordSet nesnesini açarken hata olması durumunda, ADO OLEDB sağlayıcısından en açık hatayı döndürmelidir. Yukarıdaki kodla karşılaşılabilecek bazı yaygın hatalar aşağıdadır.
Bağlantı dizesindeki DefaultDir parametresini atlarsanız (veya içinde bir hata varsa) aşağıdaki hatayı alabilirsiniz:
ADO Hatası # -2147467259
Açıklama [Microsoft][ODBC Microsoft Access 97 Sürücüsü] '(bilinmeyen)'
geçerli bir yol değil. Yol adının
doğru yazıldığından ve sunucuya bağlı olduğunuzdan
dosyanın bulunduğu yer.
ODBC Sürücüleri için Kaynak Microsoft OLE DB Sağlayıcısı
Bağlantı dizesindeki Dbq parametresinde bir hata varsa aşağıdaki hatayı alabilirsiniz:
ADO Hatası # -2147467259 Açıklaması [Microsoft][ODBC Microsoft Access 97 Sürücüsü] '(bilinmeyen)' dosyası bulunamadı.
ODBC Sürücüleri için Kaynak Microsoft OLE DB Sağlayıcısı
Yukarıdaki hatalar, Bağlantı hataları koleksiyonunu aşağıdaki hatalarla da doldurur:
ADO Hatası # -2147467259
Açıklama [Microsoft][ODBC Sürücü Yöneticisi] Sürücü's
SQLSetConnectAttr başarısız oldu
ODBC Sürücüleri için Kaynak Microsoft OLE DB Sağlayıcısı
ADO Hatası # -2147467259
Açıklama Oturum Açma Başarısız Oldu
ODBC Sürücüleri için Kaynak Microsoft OLE DB Sağlayıcısı
Not
Her hata için ADO Hata numarası aynıdır; bu durumda genel E_FAIL hata iletisi olan 0x80004005 çevriliyor. Temel alınan Bileşen, karşılaşılan koşul için belirli bir hata numarasına sahip değildi, ancak yararlı bilgiler ADO'ya hiç bu kadar az verilmedi.
Başvurular
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin