Как открыть подключение ADO и объекты наборов записей

Код статьи: 168336 - Список продуктов, к которым относится данная статья.
Для Microsoft Visual Basic.NET версии данной статьи, см. 310985.
Развернуть все | Свернуть все

На этой странице

Аннотация

Объекты данных ActiveX (ADO) предлагает несколько способов открыть оба объекты подключения и набор записей. В этой статье приведен пример программы для Некоторые общие методы для каждого объекта.

Дополнительная информация

Существует несколько способов открыть объект подключения в пределах ADO:
  • Установив для свойства ConnectionString допустимое подключение строку и затем вызвав метод Open(). Эта строка подключения является поставщик- зависимые.
  • Путем передачи первый аргумент является допустимой строкой подключения Метод Open().
  • При передаче объекта допустимые команды в первый аргумент набор записей открытого метода.
  • Путем передачи данных ODBC источник и при необходимости код пользователя и пароль, чтобы метод Open() объекта подключения.
Существует три способа открыть объект набора записей в ADO:
  • При открытии набора записей из Connection.Execute() метод.
  • При открытии набора записей из Command.Execute() метод.
  • При открытии объекта Recordset без подключения или Объект Command и передается допустимая строка подключения к второй аргумент метод Recordset.Open().
Этот код предполагает, что Nwind.mdb устанавливается с помощью Visual Основные и находится в каталоге C:\Program Files\DevStudio\VB:
   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
				

ЗАМЕТКИ ОБ

Только объект подключения ADO имеет коллекцию ошибок. В observant читатель заметит, фактически является облегченным ошибка обработчика для Примеры RecordSet.Open. В случае возникновения ошибки при открытии набора записей Объект, ADO должен возвращать наиболее явные ошибки от поставщика OLE DB. Некоторые распространенные ошибки, которые могут быть столкнулись с предшествующий код необходимо выполнить.

Если не задан (или ошибка в) параметр DefaultDir в подключения Строка, может появиться следующее сообщение об ошибке:
Ошибка ADO # -2147467259
Описание [Microsoft] [драйвер ODBC Microsoft Access 97] "(нет)"
не является верным путем. Убедитесь, что имя пути
имя указано правильно и что вы подключены к серверу
где файл находится.
Поставщик Microsoft OLE DB для ODBC источника Драйверы
Ошибка в параметре Dbq в случае подключения Строка, может появиться следующее сообщение об ошибке:
Ошибка ADO # -Не удалось 2147467259 описание [Microsoft] [драйвер ODBC Microsoft Access 97] найти
файл (нет).
Поставщик 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.

Ссылки

Для получения дополнительных сведений щелкните следующий номер статьи номер статьи базы знаний Майкрософт:
301216Как заполнить объект DataSet из базы данных с помощью Visual Basic.NET
Для получения дополнительных сведений нажмите кнопку следующие номера статей базы знаний Майкрософт:
188857 PRB: Использование метода Open для изменения CursorType и LockType
194979 ИНФОРМАЦИЯ: ADO порождает дополнительные подключения к SQL Server
168335 ИНФОРМАЦИЯ: С помощью объектов данных ActiveX (ADO) посредством Visual Basic
193332 ФАЙЛ: MDACCON.EXE с помощью соединения строк с ODBC, OLEDB, ADO /, RDS

Свойства

Код статьи: 168336 - Последнее изменение :: 3 июня 2011 г. - Редакция: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft ActiveX Data Objects 2.7
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
Ключевые слова: 
kbhowto kbmt KB168336 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:168336

Отправить отзыв