Учебник по Visual Basic - 12.5. Доступ к базам данных через объекты ADODB.

E-mail Печать PDF
Рейтинг пользователей: / 682
ХудшийЛучший 
Индекс материала
Учебник по Visual Basic
1.2. Преймущества и недостатки VB
1.3. Запуск VB.
1.4. Интегрированная среда разработки (IDE - Integrated Development Environment)
1.5. Основные конструкции языка.
2. Типы данных. Переменные и процедуры, их области видимости. Массивы.
2.2. Переменные и процедуры, их области видимости.
2.3. Объявление массивов и работа с ними.
3. Создание меню
3.1. Создание статического меню
3.2. Создание контекстно-зависимого меню
5. Реализация технологии Drag&Drop средствами VB
5.1. Объекты Drag&Drop
5.2. События Drag&Drop
5.3. Автоматическое перетаскивание
5.4. Перетаскивание с использованием OLE
5.5. Автоматическое перетаскивание с использованием OLE
5.5. Программируемое перетаскивание с использованием OLE
6. Работа с классами в Visual Basic.
6.1.1. Добавление в класс свойств.
6.1.2. Добавление в класс методов.
6.1.3.Добавление в класс событий.
6.1.4.Объявление и использование объектов.
6.1.5. Удаление объекта класса.
6.2. Самостоятельная работа - доработка класса Splitter.
7. Технология OLE
7.1. Элемент управления OLE Container
7.2. Объекты OLE как элементы управления
7.3. OLE Automation
7.4. Создание объекта OLE
7.5. Использование объекта OLE
7.6. Работа с объектами Word
8. Создание элементов управления Active X.
Создание элементов управления ActiveX
Создание элементов управления Active X на примере ZigZag.
9. Использование функций Windows API в VB.
API-вызовы
10. Файловые функции в Visual Basic.
10.2. Обработка текстовых документов (файлы последовательного доступа).
10.3. Файлы произвольного (прямого) доступа.
10.4. Файлы инициализации.
10.5. Использование FSO (File System Object).
11. Использование элемента управления WinSock Control для создания сетевых приложений.
12. Доступ к базам данных из VB с помощью ADO.
12.2. Объект управления данными - ADO Data Control.
12.3. Связанные с данными элементы управления.
12.4. Использование Data Grid Control.
12.5. Доступ к базам данных через объекты ADODB.
13. Практика
Все страницы

5. Доступ к базам данных через объекты ADODB.

Объектная модель ADO определяет набор (коллекцию) программируемых объектов, которые могут использоваться с Visual Basic, Visual C++, VBScripting, Java на любой платформе, которая поддерживает COM и Автоматизацию OLE. Объектная модель ADO разработана для выполнения большинства особенностей OLE DB.

ADO содержит семь объектов:

  • Connection
  • Command
  • Parameter
  • Recordset
  • Field
  • Property
  • Error

и четыре набора объектов (коллекции):

  • Fields
  • Properties
  • Parameters
  • Errors

Объекты Connection, Recordset и Command являются ключевыми объектами в объектной модели ADO. ADO приложение может использовать объект Connection для установки соединения с сервером БД, объект Command - для выдаче команды к БД, таких как запросы, обновления и т.п. и объект Recordset - для просмотра и манипулирования данными. Командный язык, используемый с объектом Command, зависит от провайдера для БД. В случае реляционных баз данных в качестве командного языка выступает SQL.

К набору объектов Errors и объекту Error можно получить доступ через объект Connection после того как случилась ошибка провайдера. К набору объектов Fields и объекту Field можно получить доступ через объект Recordset после того как в объекте Recordset появятся какие-либо данные. Информация о метаданных объекта Recordset может быть просмотрена через набор объектов Fields и объект Field.

 

Объект Connection.

Объект Connection позволяет установливать сеансы связи с источниками данных. Объект Connection обеспечивает механизм для инициализации и установления соединения, выполнения запросов и использования транкзаций.

Метод Open объекта Connection используется для установки соединения. Перед соединением приложение может установить строку соединения, тайм-аут соединения, БД по умолчанию и атрибуты соединения. Объект Connection так же позволяет установить свойство CommandTimeout для всех командных объектов, связвнных с данным соединением. Параметром метода Open является строка соединения. Для того, чтобы проще ее написать, создайте на форме временный элемент ADO Data Control и создайте с помощью мастера строку соединения. Потом просто скопируйте ее и используйте в методе Open, а временный объект удалите.

Запросы могу выполняться с использованием метода Execute.

После работы с БД необходимо закрыть соединение методом Close и обнулить переменную типа ADODB.Connection.

Пример:

Dim Conn1 as ADODB.Connection

Conn1 =  New ADODB.Connection

Conn1.ConnectionTimeout = 100

Conn1.Open "Driver={SQL Server};Server=Server1;Uid=sa;Pwd=;Database=pubs"

Conn1.Execute "DELETE * FROM Table1"

Conn1.Close

Conn1 = Nothing

 

Объект Command.

Объект Command позволяет передавать команды к БД. Эти команды могут готовить строки запросов и связянные с запросами параметры, но не ограничиваются только запросами.

Объект Command может как открывать новое соединение, так и использовать уже существующее соединение для выполнения запросов, в зависимости от установки свойства ActiveConnection. Если свойство ActiveConnection установлено с ссылкой на объект Connection, то объект Command будет использовать существующее соединение из объекта Connection. Если свойство ActiveConnection определяется строкой соединения, то для объекта Command будет установлено новое соединение. Для одного объекта Connection могут использоваться несколько объектов Command.

Выполнение запросов может генерировать набор записей, множественные наборы записей или не генерировать никаких записей. Например, выполнение запросов языка описания данных (data definition language - DDL) не генерирует наборов записей. Выполнение оператора SELECT может генерировать набор записей и выполнение пакета SELECT операторов или хранимой процедуры генерирует более чем один набор записей.

Строка запроса определяется свойством CommandText. Строка запроса может быть определена на стандартном языке манипулирования данными (data manipulation language - DML) с использованием SELECT, INSERT, DELETE, или UPDATE операторов или на языке описания данных, например CREATE или DROP. В строке запроса может также быть имя хранимой процедуры или таблицы.

Тип строки запроса определяется свойством CommandType. Значения свойства CommandType могут быть следующими: adCmdText, adCmdTable, adCmdStoreProc и adCmdUnknown. Когда строкой запроса является SQL оператор, свойство CommandType должно определяться как adCmdText. Значения adCmdStoreProc или adCmdTable применяются, если строка запроса определяется как хранимая процудура или имя таблицы.

В следующем примере показано выполнение оператора SELECT, которое возвращает объект Recordset:

Dim Comm1 as ADODB.Command

Dim Rsc1 as ADODB.RecordSet

Comm1 =  New ADODB.Command

Comm1.ActiveConnection="Driver={SQL Server};Server=Server1;Uid=sa;Pwd=; " & _

"Database=pubs"

Comm1.CommandText= "SELECT * FROM Table1"

Comm1.CommandTimeout=15

Comm1.CommandType = adCmdText

Set Rsc1 = Comm1.Execute()

‘работа с Rsc1

...

Rsc1.Close

Comm1.Close

Comm1 = Nothing

Rsc1 = Nothing

Объект RecordSet.

Объект Recordset обеспечивает методы для манипулирования наборами данных. Объект Recordset позволяет добавлять, удалять, обновлять записи и перемещаться по записям внаборе данных. С помощью набора объектов Fields и объекта Field можно получить доступ к любой конкретной записи. Обновление объекта Recordset может быть сделано немедленно или в пакетном режиме. При создании объекта Recordset автоматически открывается курсор.

Объект Recordset позволяет определить тип курсора иего расположение для выбора результирующего набора данных. Используя свойство CursorType можно определить тип курсора: forward-only, static, keyset-driven, или dynamic. Тип курсора определяет поведение объекта Recordset при прокрутке записей вперед/назад или при обновлении записей. Тип курсора также влияет на видимость измененных записей.

По умолчанию тип курсора устанавливается в forward-only только для чтения. Если необходимо только читать данные в однонаправленном режиме (forward), то изменять тип курсора не следует. С другой стороны, можно определить тип курсора в зависимости от решаемой задачи.

Набор объектов Fields и объект  Field

Набор объектов Fields и объект Field позволяют получить доступ к данным любой колонки в текущей записи. К набору объектов Fields можно получить доступ через объект Recordset. К объекту Field можно получить доступ через набор объектов Fields используя индекс. Объект Field можно использовать для составления новой записи или для изменения уже существующих данных и затем использовать методы AddNew, Update или UpdateBatch объекта Recordset для вставки новых или изменения существующих данных.

Пример:

Dim Comm1 as ADODB.Command

Dim Rsc1 as ADODB.RecordSet

Dim Fld1 as ADODB.Field

Comm1 =  New ADODB.Command

Comm1.ActiveConnection="Driver={SQL Server};Server=Server1;Uid=sa;Pwd=; " & _

"Database=pubs"

Comm1.CommandText= "SELECT * FROM Table1"

Comm1.CommandTimeout=15

Comm1.CommandType = adCmdText

Set Rsc1 = Comm1.Execute()

‘работа с Rsc1

For Each Fld1 In Rsc1.Fields

            Debug.Print Fld1.Name

            Debug.Print Fld1.Type

            Debug.Print Fld1.Value

Next

Rsc1.Close

Comm1.Close

Comm1 = Nothing

Rsc1 = Nothing

Fld1=Nothing

Движение по RecordSet'у осуществляется с помощью следующих методов этого объекта:

  • BOF (возвращает True или False)
  • EOF (аналогично, только конец таблицы)
  • MoveNext
  • MoveFirst
  • MovePrevious
  • MoveLast
  • Move(number)

Таким образом, пройтись по всем записям в наборе можно следующим образом:

Dim Comm1 as ADODB.Command

Dim Rsc1 as ADODB.RecordSet

Comm1 =  New ADODB.Command

Comm1.ActiveConnection="Driver={SQL Server};Server=Server1;Uid=sa;Pwd=; " & _

"Database=pubs"

Comm1.CommandText= "SELECT * FROM Table1"

Comm1.CommandTimeout=15

Comm1.CommandType = adCmdText

Set Rsc1 = Comm1.Execute()

‘работа с Rsc1

Rsc1.MoveFirst

Do While Not (Rsc1.EOF)

            ... ‘какие-то действия с текущей записью

            Rsc1.MoveNext

Loop

Rsc1.Close

Comm1.Close

Comm1 = Nothing

Rsc1 = Nothing