WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     | 1 |   ...   | 5 | 6 || 8 | 9 |

Модель доступа к данным ADO (ActiveX Data Objects) является средством доступа к данным различного типа, появившимся первоначально в Microsoft Access 2000. Модель ADO опирается на услуги так называемого универсального поставщика данных OLEDB (OLE DB provider) и использует новые технологии программирования. OLE DB позволяет получать унифицированный доступ как к реляционным источникам данных, так и к нереляционным источникам, таким, как хранилища различной неупорядоченной информации (почта, различные текстовые наборы, графические данные, службы каталогов и т. д.). OLE DB позволяет использовать одну и ту же модель доступа к данным (ADO) для связи с практически всеми известными источниками данных (в том числе и с хранилищами (нереляционными источниками данных)).

Для использования ADO Вам следует подключить ссылку на соответствующую библиотеку. Для этого нужно в окне редактора Visual Basic установить ссылку на библиотеку Microsoft ActiveX Data Objects (меню «Tools» _ «References»).

Откроется диалоговое окно «References …» (Ссылки), в котором следует выбрать библиотеку «Microsoft ActiveX Data Objects 2.8» (или старше). Соответствующий файл библиотеки называется msado28.tlb. Эти файлы обычно расположены в каталоге Programs Files/Common Files/System/Ado.

В объектную модель ADO входят следующие объекты:

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

Основными объектами в ADO являются Connection, Command, Recordset.

Объект Connection Объект Connection отвечает за физический сеанс связи с конкретным источником данных. С помощью объекта Connection следует конфигурировать сеанс связи до использования данных подключаемого источника данных; указать базу данных, которая будет использоваться по умолчанию в качестве источника данных; указать провайдера OLE DB, который будет использоваться для связи с данными; установить уровень изоляции для транзакций; реально устанавливать и прерывать связь с указанным источником данных.

Кроме того можно выполнить достаточно многих других действий, связанных с различными аспектами использования необходимого источника данных.

Рассмотрим некоторые свойства и методы объекта Connection.

Свойство ConnectionString (строковое значение). Одно из наиболее важных и постоянно используемых свойств. Свойство имеет статус "чтение/запись". Информация, заданная в тексте строки, используется для установления соединения с источником данных.

Синтаксически строка соединения представляет пары вида: аргумент = значение, разделенные символом ";" (точка с запятой). ADO поддерживает пять аргументов, но в зависимости от Провайдера ему могут предаваться и другие аргументы, которые никак не обрабатываются средствами ADO и передаются непосредственно Провайдеру. Вот список общих для всех Провайдеров аргументов, поддерживаемых ADO:

Provider - имя Провайдера, с которым устанавливается соединение.

File Name - имя файла, содержащего предустановленную информацию о соединении, передаваемое провайдеру.

Remote Provider - имя Провайдера, используемое при открытии соединения на клиентской стороне. Используется только при работе со службой RDS.

Remote Server - имя сервера (путь), используемое при открытии соединения на клиентской стороне. Используется только при работе со службой RDS.

URL - адрес, идентифицирующий такие ресурсы, как файл или каталог. Заметьте, свойства, установленные в строке соединения, могут измениться после открытия соединения, поскольку может произойти трансляция аргументов в форму, предусмотренную Провайдером.

Ниже приведено несколько примеров различных строк подключения (Connection String).

Использование SQL Server OLE DB Provider (подключение Windows к SQL Server):

"Provider=SQLOLEDB;Data Source=YourDb;Initial Catalog=pubs" "Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;Data Source=london1" "Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=MyBase;UserID=ItsMe;Password=MyPass;" Строка подключения к источнику данных ODBC "Provider=MSDASQL;DSN=MyDSN; UID=ItsMe;PWD=MyPass; " При подключении к файлу Access или Excel строка подключения могла бы выглядеть так:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Борей.mdb" Методы объекта Connection позволяют открывать или закрывать соединение, выполнять команды, основанные на SQL-операторах и т.д. Далее следует краткое описание некоторых методов.

Метод Open устанавливает физическое соединение с источником данных:

connection.Open ConnectionString, UserID, Password, Options В этом методе можно указать следующие (необязательные параметры):

ConnectionString – Строка подключения (смотри свойство ConnectionString);

UserID – имя пользователя, который устанавливает соединение;

Password – пароль пользователя, который устанавливает соединение После создания экземпляра объекта ADODB.Connection используем следующие команды для открытия базы данных:

'команда открывает базу данных Microsoft Access objConnection.Open "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\Scripts\Inventory.mdb" 'команда открытия базы данных Access objConnection.Open "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\Scripts\Inventory.accdb" 'для открытия базы данных SQL Server objConnection.Open "Provider=SQLOLEDB;Data Source=atl-sql01;Trusted_Connection=Yes;Initial Catalog=Inventory;User ID=fabrikam\kenmyer;Password=34DE6t4G!;" Методы BeginTrans, CommitTrans и RollbackTrans. Эти методы нужны, если вы в своих приложениях используете механизм транзакций. В одну транзакцию объединяется группа действий, которые либо должны быть целиком выполнены, либо целиком отменены.

В такую группу, например, можно объединить операцию снятия денег со счета и операцию помещения их на другой счет. Если выполнять эти операции разрозненно, то в случае сбоя может случиться ситуация, при которой деньги будут сняты с одного счета, а на другой счет не поступят (то есть просто исчезнут из учета). Применяя транзакции, в такой ситуации можно сделать откат (отмену всей группы операций), в результате чего будет отменено и снятие денег со счета (первая операция).

При помощи метода BeginTrans вы можете начать транзакцию, а при помощи метода CommitTrans — подтвердить все сделанные транзакцией изменения. Если в процессе выполнения операций, включенных в транзакцию, пошло что-то не так, откат (отмену всех изменений) можно сделать при помощи метода RollbackTrans. Метод BeginTrans можно вызывать как процедуру и как функцию. Во втором случае BeginTrans возвращает значение, соответствующее текущему уровню изоляции транзакции (см. соответствующее свойство, описанное чуть выше):

Object.BeginTrans Level= Object.BeginTrans Метод Cancel объекта Connection прерывает выполнение асинхронно запущенных методов Open или Execute, в зависимости от того, какой из них был запущен последним.

Асинхронно запущенные методы — это методы, которые были запущены с асинхронными опциями (то есть с опциями adAsyncConnect, adAsyncExecute, adAsyncFetch).

Метод Close закрывает объект Connection и все связанные с ним объекты, освобождая занятые ими системные ресурсы. Чтобы окончательно удалить объект из памяти, как и в случае использования других объектных переменных, следует присвоить переменной значение Nothing:

MyConn = Nothing.

При помощи метода Execute можно выполнить запрос, SQL-оператор, хранимую процедуру или любую команду, распознаваемую конкретным провайдером данных. Формат запуска этого метода имеет два варианта.

Set recordset = connection.Execute (CommandText, RecordsAffected, Options) connection.Execute CommandText, RecordsAffected, Options Первый вариант соответствует команде, возвращающей набор записей. Соответственно в этом случае метод запускается как функция, возвращающая ссылку на объект типа Recordset. Второй вариант, соответствующий формату запуска процедуры, применяется для запуска команд, не возвращающих записи (например, для запуска выполняемых запросов или соответствующих хранимых процедур). В любом случае метод принимает три аргумента.

CommandText аргумент типа String может содержать SQL-оператор, имя таблицы или сохраненной процедуры, а также текст ориентированной на специфику конкретного провайдера данных команды, которую необходимо выполнить.

RecordsAffected аргумент является необязательным. Здесь вы можете указать переменную типа Long, которая после выполнения команды будет содержать количество записей, подвергшихся воздействию команды (возвращаемых командой, измененных командой и т.д.).

Options аргумент Options, также необязательный, указывает на способ трактовки текста команды (первый аргумент). Может содержать одну или комбинацию нескольких констант типа CommandTypeEnum или ExecuteOptionEnum. Констант этих типов достаточно много.

С полным перечнем вы сможете ознакомиться при помощи справочной системы MS Access.

В качестве примера можно упомянуть следующие: adCmdTableDirect (первый аргумент трактуется как имя таблицы, чьи строки необходимо возвратить), adCmdStoredProc (первый аргумент метода содержит имя хранимой на стороне сервера процедуры), adAsyncExecute (указывает на то, что команда должна выполняться асинхронно, то есть приложение не будет ожидать окончания выполнения команды) и т.д. Ниже приведен простой пример применения метода Execute.

Dim MyConn As ADODB.Connection Dim MyStr As String Dim ConStr As String MyStr ="Delete * from [Временная];" ConStr="Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\db2.mdb" Set MyConn= New ADODB. Connection MyConn.Open ConStr MyConn.Execute MyStr MyConn.Close В данном примере осуществляется подключение к базе данных MS Access db2.mdb, расположенной в корневом каталоге диска С. Обратите внимание на то, что перед подключением к базе данных вы должны указать как минимум имя провайдера и название файла базы данных, иначе вы получите сообщение об ошибке.

Метод OpenSchema возвращает ссылку на объект Recordset, представляющий определенную схему.

Set recordset = connection.OpenSchema (QueryType, Criteria, SchemaID) Тип этой схемы определяется первым аргументом метода, который может принимать одно из значений типа SchemsEnum. К этому типу принадлежит достаточно большое количество именованных констант. В данной ситуации схема имеет достаточно широкое толкование. Например, указав константу adSchemaTables, вы получаете список доступных вам таблиц. Список констант действительно очень большой, и если вы действительно интересуетесь этим вопросом, вам следует воспользоваться справкой.

Объект CurrentProject Для работы с текущей базой данных можно использовать объект CurrentProject.

Его метод OpenConnection позволяет открыть ADO соединение к текущей базе данных.

CurrentProject.OpenConnection(BaseConnectionString, UserID, Password) Все параметры являются необязательными.

BaseConnectionString - строковое выражение, которое определяет строку соединения с базой данных.

Свойство Connection возвращает ссылку на текущий объект Connection.

Dim MyConn As ADODB.Connection MyConn= CurrentProject. Connection Объект Recordset Объект Recordset представляет любой набор записей. Этот набор записей можно представлять себе как обычную временную таблицу, имеющую строки и столбцы. При помощи этого объекта вы сможете манипулировать данными, полученными от установленного провайдера. Каждый объект Recordset характеризуется определенным типом курсора, то есть типом объекта, обслуживающего данный набор. В ADO определено четыре типа курсора, один из которых указывается при открытии объекта Recordset:

Dynamic cursor (динамический курсор). Позволяет просматривать все изменения данных (вставку, удаление, редактирование записей), сделанные другими пользователями.

Существует возможность перемещаться в любом направлении по набору, а также пользоваться закладками (если их поддерживает провайдер).

Keyset cursor (курсор типа ключевой набор). Отличается от динамического курсора тем, что для просмотра недоступны добавленные или удаленные другими пользователями записи.

Static cursor (статический курсор). Вам предоставляется статическая копия набора данных, которую вы можете использовать только для просмотра, генерации отчетов и тому подобных действий.

Forward-only cursor (курсор с возможностью перемещения только вперед). Курсор этого типа позволяет перемещаться по набору данных только вперед. Все изменения в наборе, сделанные другими пользователями, вам будут невидны. Курсоры этого типа применяются для оптимизации работы приложения в тех случаях, когда требуется только однократный проход по набору данных.

Для создания объекта Recordsetиспользуется следующий синтаксис:

Dim MyRec As ADODB.Recordset Set MyRec = New ADODB.Recordset С конкретным соединением (объектом Connection) и источником записей (таблицей, запросом и т.д.) объект Recordset связывается при его открытии (метод Open).

Рассмотрим некоторые свойства объекта Recordset.

Свойство ActiveConnection указывает на соединение (объект Connection), которому принадлежит открытый объект Recordset. Свойство доступно не только для чтения, но и для записи, то есть с его помощью можно связать объект Recordset с объектом Connection. Если объект Connection открыт, то в качестве значения свойства указывается значение типа Variant, содержащее его имя. Если соединение закрыто (не открыто), то значением свойства ActiveConnection должна быть строка, определяющая соединение (см. свойство ConnectionString объекта Connection).

Свойства ВОF и EOF. Свойство ВОF получает значение True (Истина), если была сделана попытка перейти на позицию, предшествующую первой записи (например, при итерации от конца набора данных в направлении его начала). Соответственно, свойство EOF получает значение True (Истина), если была сделана попытка перейти на запись, следующую за последней записью набора. Если набор данных пуст, оба свойства имеют значение True (Истина). Свойства ВОF и EOF часто используются для организации перебора записей набора (итерации по записям).

Свойство CursorType задает один из четырех типов курсора, который будет использоваться с набором данных (объектом Recordset). Выше уже перечислялись определенные в ADO типы курсора: adOpenDynamic (динамический набор), adOpenKeyset (ключевой набор), adOpenStatic (статический набор) и adOpenForwardOnly (набор с итерацией только вперед). Наиболее универсальным и часто употребляемым является курсор типа динамический (adOpenDynamic).

Свойство LockType указывает на тип блокировки, применяемый к редактируемым записям при одновременном доступе к ним нескольких пользователей. Значением этого свойства может быть одна из констант типа LockTypeEnum, к числу которых принадлежат следующие: adLockBatchOptimistic (оптимистический тип блокировки записей с отложенным обновлением), adLockOptimistic (оптимистический тип блокировки; записи блокируются только тогда, когда вызывается метод Update), adLockPessimistic (пессимистический тип блокировки; записи блокируются сразу после начала редактирования), adLockReadOnly (записи предназначены только для чтения; вы не можете изменять данные, хранящиеся в записях), adLockUnspecified (тип блокировки не определен;

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

Pages:     | 1 |   ...   | 5 | 6 || 8 | 9 |






© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.