Тверской государственный университет
Опубликован: 13.09.2006 | Доступ: свободный | Студентов: 5134 / 388 | Оценка: 4.23 / 3.83 | Длительность: 28:12:00
Специальности: Программист, Менеджер
Лекция 5:

Объекты ADO

Объектная модель ADO

Рассмотрим объектную модель ADO и начнем с графического представления отношений между объектами в этой модели:

Отношения между объектами в объектной модели ADO

Рис. 5.1. Отношения между объектами в объектной модели ADO

Объекты ADO имеют следующее назначение:

  • Command - Определяет ту специальную команду, которую предполагается выполнить над источником данных.
  • Connection - Задает открытое соединение с источником данных.
  • Error - элемент коллекции Errors. Содержит описание ошибки доступа, которая возникла при выполнении Провайдером определенной операции. Список этих ошибок (коллекция Errors), возникших в течение одной операции создается Провайдером данных.
  • Field - элемент коллекции Fields. Поле записи, задает столбец данных, все значения в котором имеют один и тот же тип.
  • Parameter - элемент коллекции Parameters. Представляет параметр или аргумент, связанный с объектом Command, который определяет параметризованный запрос или хранимую процедуру. Параметры передаются запросу или процедуре.
  • Property - элемент коллекции Properties. Представляет характеристики объектов ADO, используемые Провайдером.
  • Record - Представляет единственную запись - строку в наборе записей - объекте Recordset, или каталог или файл в файловой системе.
  • Recordset - Представляет все множество записей таблицы базы данных или результат выполнения некоторой команды. В каждый текущий момент объект Recordset ссылается только на одну запись, называемую текущей, внутри всего набора записей.
  • Stream - Представляет бинарный поток данных, рассматриваемый как последовательность байтов.

Хочу обратить внимание на некоторую особенность данной объектной модели. На верхнем уровне иерархии находится целая группа объектов. Здесь нет центрального объекта, как это обычно бывает, в который вложены все остальные объекты. Замечу, что в предыдущей модели DAO такой объект был - это объект DBEngine, задающий некую машину базы данных. В данном случае Microsoft отошла от привычной для Office 2000 практики и отказалась от введения центрального объекта, в который вложены все остальные объекты иерархии.

Чтобы дать полную характеристику объектов, нужно рассмотреть их свойства, методы и события. Кроме того, нужно понимать отношения, связывающие объекты, а еще хорошо бы понимать, как пользоваться всем этим богатством. Поговорим об этом.

Объект Connection

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

Свойства объекта Connection

У объекта Connection имеется 13 свойств, два из которых являются свойствами-участниками и возвращают коллекции объектов, остальные являются терминальными свойствами. Свойства, являющиеся объектами, показаны на рис.5.1, где приводится объектная модель ADO. Сейчас же давайте рассмотрим все свойства - терминальные и нетерминальные. Приведу краткое описание свойств:

  • Property Attributes As Long. Свойство определяет характеристики соединения и может использоваться как для чтения, так и для записи, что позволяет задать или выяснить, каким набором характеристик обладает объект Connection. Значением свойства является сумма значений устанавливаемых характеристик, значение каждой из которой задается соответствующей константой из перечисления XactAttributeEnum. По умолчанию никакие характеристики не задаются и значение этого свойства равно 0. Следует быть осторожным при задании свойства, поскольку значение, представляющее сумму значений несовместимых констант, приводит к возникновению ошибки. Свойством Attributes обладают и другие объекты ADO - Parameter, Field, Property.
  • Property CommandTimeout As Long, Property ConnectionTimeout As Long. Первым из этих свойств обладают два объекта - Connection и Command. Свойства задают в секундах интервал времени, в течение которого должен выполниться метод Execute, когда он вызывается указанными объектами. Если при выполнении метода произойдет задержка сверх указанного времени, то установление соединения или выполнение команды, заданной методом, будет прервано и возникнет ошибка. По умолчанию значение ConnectionTimeout - максимальное время для установления соединения равно 30 секундам, для выполнения команды - 15 секунд. Оба свойства имеют статус "чтение/запись". Заметьте, что значение первого свойства, установленное для объекта Connection не наследуется объектом Command, связанного с этим соединением. Чтобы корректно установить значения свойств необходимо, конечно представлять каково может быть максимальное время установления соединения и время выполнения той или иной команды.
  • Property ConnectionString As String. Одно из наиболее важных и постоянно используемых свойств. Свойство имеет статус "чтение/запись". Информация, заданная в тексте строки, используется для установления соединения с источником данных. Синтаксически строка соединения представляет пары вида: аргумент = значение, разделенные символом " ; " (точка с запятой). ADO поддерживает пять аргументов, но в зависимости от Провайдера ему могут предаваться и другие аргументы, которые никак не обрабатываются средствами ADO и передаются непосредственно Провайдеру. Вот список общих для всех Провайдеров аргументов, поддерживаемых ADO:
    • Provider - имя Провайдера, с которым устанавливается соединение.
    • File Name - имя файла, содержащего предустановленную информацию о соединении, передаваемое провайдеру,.
    • Remote Provider - имя Провайдера, используемое при открытии соединения на клиентской стороне. Используется только при работе со службой RDS.
    • Remote Server - имя сервера (путь), используемое при открытии соединения на клиентской стороне. Используется только при работе со службой RDS.
    • URL - адрес, идентифицирующий такие ресурсы, как файл или каталог. Заметьте, свойства, установленные в строке соединения, могут измениться после открытия соединения, поскольку может произойти трансляция аргументов в форму, предусмотренную Провайдером.
  • Property CursorLocation As CursorLocationEnum. Свойство позволяет сделать выбор между различными библиотеками курсоров, доступных Провайдеру. Обычно применяемые значения констант - adUseClient и adUseServer позволяют выбрать библиотеку на стороне клиента или сервера. Курсоры, возвращаемые методом Execute, наследуют заданную установку. Также поступают и объекты Recordsets, наследуя установку из связанного с ними соединения.
  • Property DefaultDatabase As String. Задает имя базы данных по умолчанию. Свойство имеет статус "чтение/запись".
  • Property Errors As Errors. Свойство имеет статус "только чтение". Возвращает коллекцию объектов Error. Каждый из этих объектов создается автоматически Провайдером, если возникает ошибка при выполнении той или иной команды. Вся коллекция связана только с одной командой. При выполнении новой команды при появлении первой ошибки старая коллекция Errors очищается и начинает создаваться заново. Метод Clear позволяет организовать принудительную чистку коллекции. Заметьте, объекты Error создаются только при выполнении кода Провайдера. Ошибки ADO, возникающие в коде VB/VBA, приводят к появлению события OnError и могут быть обработаны как все динамические ошибки периода выполнения.
  • Property IsolationLevel As IsolationLevelEnum. Свойство имеет статус "чтение/запись". Специальные константы задают так называемый уровень изоляции. По умолчанию значение константы - adXactChaos. При удаленном доступе на клиентской стороне допустимо только значение - adXactUnspecified.
  • Property Mode As ConnectModeEnum. Свойство, значения которого задаются перечислением и определяют статус модификации данных. Это свойство имеют объекты Connection, Record и Stream. Для объекта Connection значение по умолчанию - adModeUnknown, для объекта Record - adModeRead, для Stream возможно то или другое значение в зависимости от того, как объект связан с источником данных. Установить значение этого свойства можно только тогда, когда объект закрыт. Изменить статус уже открытого объекта невозможно.
  • Property Properties As Properties. Второе из свойств объекта Connection, возвращающее в качестве результата объект - коллекцию Properties. Этим же свойством обладают и другие объекты - Command и Recordset. Каждый из объектов Property содержит характеристику, передаваемую Провайдеру.
  • Property Provider As String. Строка, задающая имя Провайдера. Это имя может быть установлено и другим способом, например, как один из аргументов при задании свойства ConnectionString.
  • Property State As Long. Многие из объектов ADO обладают этим свойством, которое имеет статус "только для чтения" и определяет совокупность состояний объекта - открыт он или закрыт, а для объектов выполняющих асинхронный метод - состояние выполнения. Поэтому значение свойства задается суммой значений соответствующих констант. Возможные значения констант следующие: adStateClosed = 0, adStateConnecting = 2, adStateExecuting = 4, adStateFetching = 8, adStateOpen = 1. Если свойство возвращает, например, значение 5, то это означает, что объект открыт, а выполняемый метод, например, Execute находится в активном состоянии.
  • Property Version As String. Свойство имеет статус "только для чтения" и возвращает версию библиотеки ADODB.
Ольга Гафарова
Ольга Гафарова

Добрый день. Подскажите формулы при решении задачи на рис. 2.2 в лекции №2. Закон Ома, какие должны использоваться формулы для I и R

Курс: Основы офисного программирования и документы Excel

Серегй Лушников
Серегй Лушников