Архитектура Microsoft Windows для разработчиков



Архитектура Microsoft Windows для разработчиков

         

DAO и Microsoft Excel



DAO и Microsoft Excel

В этом упражнении Вы воспользуетесь DAO для передачи данных из БД Jet в

рабочую книгу Microsoft Excel.

> Создание ссылки на DAO в Microsoft Excel Запустите Microsoft Excel. В меню Tools, Macro выберите команду Visual Basic Editor. Будет запущен Office 97 Visual Basic Editor. В меню Tools Visual Basic Editor щелкните команду References. Выберите пункт Microsoft DAO 3.5 Object Library и щелкните кнопку ОК.

> Добавление кода для извлечения данных

В меню Insert щелкните команду Module, чтобы добавить в приложение но вый модуль. В разделе General Declaration добавьте следующие объявления:

Public db As Database Public rs As Recordset

В меню Insert выберите команду Procedure, чтобы открыть диалоговое окно Add Procedure.

Введите следующую информацию:
Поле Значение
Name Load Data
Type Sub
Scope Public
Щелкните кнопку ОК. В процедуру LoadData добавьте следующий код:

Dim iCounter As Integer Dim iRecordNum As Integer

Set db = OpenDatabase("C:\WA\Practice\Nwind.mdb")

Set rs = db.OpenRecordset("Employees")

rs.Movelast

iRecordNum = rs.RecordCount

rs.MoveFirst

Range("A1").Select

For iCounter = 1 To iRecordNum

Cells(iCounter, 1).Value = rs.Fields("FirstName")

Cells(iCounter, 2).Value = rs.Fields("LastName")

rs.MoveNext

Next iCounter

rs.Close

db.Close

> Тестирование приложения Закройте Visual Basic Editor и сохраните рабочую книгу Excel под именем Ex1.xls. В меню Tools, Macro выберите команду Macros, чтобы открыть диалоговое окно Macros. Выберите в списке пункт LoadData и щелкните кнопку Run.

В результате в рабочей книге должен отобразиться список сотрудников.

Сохраните изменения и закройте рабочую книгу. Не закрывайте Microsoft Excel (он понадобится в следующем упражнении).



DAO и ODBC



DAO и ODBC

Средствами DAO Вы можете подключаться к ODBC-совместимым источникам данных (например, к БД SQL Server) следующими способами: открыть источник данных напрямую, создать ссылку на него или воспользоваться средствами ODBCDirect. Имейте в виду, что RDO и ADO лучше подходят для разработки клиент-серверных приложений, чем DAO.



Достоинства



Достоинства

Знакомый интерфейс: DAO — это самый зрелый объектно-ориентированный интерфейс. Эффективность работы с ISAM: DAO предназначен в первую очередь для работы с ISAM-совместимыми БД и обеспечивает оптимальную производительность. ODBCDirect: хотя это не лучший интерфейс для подключения к ODBC-coвместимым БД, он позволяет DAO воспользоваться преимуществами RDO.



Достоинства



Достоинства

Эффективность ODBC-доступа: RDO спроектирован для подключения к ODBC-совместимым БД, поэтому он максимально использует возможности и преимущества удаленных источников данных. Обеспечивает совместимость с ISAM



Достоинства



Достоинства

Унифицированный стандарт: модель ADO предоставляет пользователю все возможности, предусмотренные поставщиком услуг БД, и ускоряет выполнение типовых операций. Расширяемость: в будущем ADO станет надмножеством RDO. Интерфейс СОМ: поскольку ADO — это компонент на основе СОМ, он будет доступен любым приложениям, работающим с объектами СОМ (включая Visual Basic). В настоящее время нет лицензионных ограничений на использование ADO. Активные серверные страницы: ADO-сценарии можно разрабатывать на языке Microsoft VBScript.



Файловые и ISAM-совместимые БД



Файловые и ISAM-совместимые БД

Данные, записанные как текст, хранятся в файлах, которые доступны при использовании традиционного файлового ввода/вывода. Для ускорения операций информацию можно хранить в двоичном формате индексно-последовательного метода доступа (Indexed Sequential Access Method, ISAM). Однако большинство ISAM-совмести-мых БД используют собственные форматы, поэтому для работы с ними необходимы специальные драйверы БД. Технология общего ядра (Joint Engine Technology, Jet) стандартизирует доступ. Для подключения к ISAM-совместимым базами данных разных форматов Jet загружает необходимые ISAM-драйверы.



Формат данных



Формат данных

Интерфейсы доступа к данным традиционно разрабатывались для конкретных форматов данных, поэтому производительность интерфейсов заметно различается. Например, DAO ориентирован на ISAM-совместимые базы данных, в то время как RDO оптимизирован для работы с ODBC-совместимыми источниками. Как правило, максимальной производительностью обладает интерфейс, разработанный специально для конкретного формата данных.



Базы данных: интерфейсы для разработчиков


Глава 7. Базы данных: интерфейсы для разработчиков Прежде всего Для изучения занятий этой главы необходимо: изучить материал главы 2 «Концепции построения сетей»; изучить материал главы 6, «Базы данных: принципы построения»; Microsoft Visual Basic 5; Microsoft Excel 97, включая VBA; база данных Northwind; звуковая карта и колонки или наушники для прослушивания мультимедиа-файлов; мультимедиа-файл Chap07.exe. Занятие 1. Основные интерфейсы
Занятие 2. Методы доступа к данным Занятие 3. Выбор подходящего метода Закрепление материала





Характеристики решений на базе ADO



Характеристики решений на базе ADO

Вот «плюсы» и «минусы» использования ADO.



Характеристики решений на базе DАО



Характеристики решений на базе DАО

Ниже перечислены достоинства и недостатки реализации решений на основе DAO.



Характеристики решений на базе RDO



Характеристики решений на базе RDO

Вот «плюсы» и «минусы» использования RDO.



Интерфейсы баз данных для разработчиков



Интерфейсы баз данных для разработчиков




Использование объектов данных ActiveX



Использование объектов данных ActiveX

В этом упражнении Вы воспользуетесь Visual Basic и ADO для подключения к источнику данных и выполнения запроса. Чтобы упростить Вам жизнь, часть кода мы подготовили заранее.

> Открытие проекта Запустите Visual Basic 5.0. В диалоговом окне New Project откройте вкладку Existing. Найдите на диске файл WA\Practice\Ch07\Lab7RDO.vbp и щелкните кнопку Open. В ответ на предложение добавить проект в Visual SourceSafe щелкните кнопку No. В меню Project выберите команду References.

Обратите внимание на заранее созданную ссылку на библиотеку Microsoft OLE DB ActiveX Data Object 1.0 Library.

> Подключение к ODBC-совместимому источнику данных В разделе General Declarations формы frmADO создайте следующую объектную переменную уровня формы:

Dim rs As New ADODB.Recordset

Откройте окно кода для события cmdConnect_Click. Добавьте следующий код для открытия набора записей:

rs.Open "SELECT LastName, FirstName FROM Employees",

"DSN=nwind;", adOpenKeyset

> Заполнение полей ввода данными из таблицы сотрудников Из списка объектов в окне кода выберите (General). Из списка процедур в окне кода выберите FillTextBoxes. Добавьте в эту процедуру код для заполнения полей ввода аналогично примеру, приведенному ниже.

txtFirstName.Text = rs! firstname

txtLastName.Text = rs!lastname

> Проверка остального кода приложения Рассмотрите код событий cmdFirst, cmdPrevious, cmdNext и cmdLast. Сохраните проект. Запустите и проверьте приложение.



Использование ODBCDirect



Использование ODBCDirect

В этом упражнении Вы средствами ODBCDirect извлечете данные из БД Northwind. Для имитации ODBC-совместимого источника данных в упражнении используется ODBC-драйвер Microsoft Access.

> Применение ODBCDirect в Microsoft Excel Переключитесь в окно Microsoft Excel. Создайте новую рабочую книгу. Запустите Visual Basic Editor. Добавьте в рабочую книгу новый модуль. Добавьте ссылку на библиотеку Microsoft DAO 3.5 Object Library. Добавьте следующие объявления в раздел General Declarations нового модуля:

Public wsODBC As Workspace Public cnODBC As Connection Public rsODBC Recordset

Создайте новую открытую процедуру и назовите ее LoadODBCData. Добавьте в процедуру LoadODBCData следующий код:

Dim iCounter As Integer

Set wsODBC = DBEngine.CreateWorkspace("ODBC_ws", "Admin", " ", dbUseODBC)

Set cnODBC = wsODBC.OpenConnection ("New", dbDriverNoPrompt, False, "ODBC;DSN=nwind")

Set rsODBC = cnODBC.OpenRecordset("Employees") Range("A1").Select iCounter = 1

Do Until rsODBC.EOF

Cells(iCounter, 1).Value = rsODBC.Fields("FirstName")

Cells(iCounter, 2).Value = rsODBC. Fields("LastName")

rsODBC.MoveNext

iCounter = iCounter + 1

Loop

rsODBC.Close

cnODBC.Close

wsODBC.Close

> Тестирование приложения Закройте Visual Basic Editor и сохраните рабочую книгу под именем Ex2.xls. В меню Tools, Macro выберите команду Macros, чтобы открыть диалоговое окно Macro. Выберите из списка пункт LoadODBCData и щелкните кнопку Run. В результате Вы должны увидеть в рабочей книге список сотрудников. Сохраните рабочую книгу и закройте Microsoft Excel.



Комбинация форматов



Комбинация форматов

Для извлечения данных из нескольких БД разных форматов может потребоваться несколько интерфейсов. Например, если приложение работает с источниками данных ISAM и ODBC, можно воспользоваться DAO и RDO. Однако эффективность такого решения невелика, поскольку Вам придется поддерживать две объектных модели. Разумнее попробовать применить ADO.



Модернизация существующих решений



Модернизация существующих решений

Если Вы модернизируете существующий продукт, объектная модель, скорее всего, уже зафиксирована. Например, если приложение разработано на основе DAO, но работает с источниками данных ODBC, модернизация этого кода с заменой объектной модели может оказаться столь дорогостоящей, что лучше продолжать поддерживать DAO. Однако, с другой стороны, рост производительности при замене DAO на RDO в некоторых случаях оправдывает затраты на модернизацию.



Недостатки



Недостатки

Малая эффективность работы с ODBC: DAO не предназначен для работы с ODBC-совместимыми источниками данных

Модель DAO ориентирована на ISAM: поскольку DAO предназначен в первую очередь для работы с ISAM-совместимыми БД, его модель соответствует именно этим базам данных.

DAO постепенно утрачивает свое значение: новые интерфейсы — например, объекты данных ActiveX — постепенно вытесняют DAO.



Недостатки



Недостатки

Поддерживает только 32-разрядные платформы, например Windows 95 и Windows NT. Если Вам надо подключить приложение к ODBC-совместимой БД на 16-разрядной платформе, придется применять ODBCDirect и DAO. Требует корпоративной редакции семейства продуктов Visual Studio: инструменты RDO доступны только приложениям, созданным с помощью корпоративной редакции средств разработки (например. Visual C++ или Visual Basic 5.0), но не на базе Microsoft Office 97.



Недостатки



Недостатки

Разработка ADO не закончена. ADO — интерфейс более высокого уровня, чем OLE DB.



Объект Connection



Объект Connection

Объект Connection RDO подобен объекту Database DAO. Он представляет собой соединение с базой данных. Хотя объекту Connection нужен объект Environment, RDO создает его автоматически — точно так же, как DAO по умолчанию создает объект Workspace.



Объект Database



Объект Database

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



Объект Recordset



Объект Recordset

Объект Recordset описывает группу записей, которые можно просмотреть или изменить. Объект Recordset представляет как записи в базовой таблице, так и результат выполнения запроса. Хотя в наборе много записей, только одна из них может быть текущей в каждый момент.

Пример В этом коде на Visual Basic открывается набор записей:

Dim db As Database

Dim rs As Recordset

'Открыть базу данных

Set db = OpenDatabase("Northwind.mdb")

'Открыть набор записей

Set rs = db.OpenRecordset("SELECT * FROM Employees", dbOpenDynaset, dbReadOnly)

'Добавьте здесь код обработки записей

'Когда закончите, закройте объекты

rs.Close

db.Close



Объект Resultset



Объект Resultset

Объект Resultset представляет собой набор записей, полученных в результате выполнения запроса. Они создаются при помощи метода OpenResultset объектов rdoQuery, rdoTable или rdoConnection.



Объект Workspace



Объект Workspace

Объект Workspase создать информацию среды, включая информацию пользователей или применяемое ядроБД. При работе с DAO не нужно создавать объект Workspase - это происходит автоматически. Кроме того, объект Workspase также отвечает за выбор соответствующего ядра для доступа к внешним данным (Microsoft Jet или OBDCDirect).



Объекты данных ActiveX



Объекты данных ActiveX

Объекты данных ActiveX (ActiveX Data Objects, ADO) — один из самых перспективных методов и, более того, основа универсальной модели доступа к данным.

ADO — это интерфейс к OLE DB. Он разработан для доступа к БД разных типов. В отличие от DAO и RDO, ADO — расширяемая программная модель, которую можно дополнять сервисами независимых поставщиков для доступа к конкретным базам данных.



Объекты доступа к данным



Объекты доступа к данным

DAO — это СОМ-интерфейс для ядра Jet (рис. 7.2). Хотя он создан для работы с базами данных Access, FoxPro или dBase, его можно применять и для доступа к ODBC-совместимым базам данных. Последняя версия DAO — ODBCDirect, которую мы и рассмотрим ниже, — модифицирована для оптимизации поддержки удаленных источников данных.



Объекты удаленных данных



Объекты удаленных данных

Объекты удаленных данных (Remote Data Objects, RDO) — это эффективная альтернатива DAO для работы с удаленными источниками данных. RDO представляет собой объектную надстройку над API ODBC (рис. 7.3). Подобно интерфейсу и серверам автоматизации СОМ, RDO можно вызывать из любой 32-разрядной среды разработки.



Обзор методов доступа к данным



Обзор методов доступа к данным

DAO, RDO, ADO и SQL-DMO — это методы доступа, предназначенные для манипулирования данными в реляционных БД (рис. 7.1). Все они выполняют сходные функции, однако каждый оптимизирован для определенной ситуации. Например, DAO лучше подходит для работы с записями в локальной БД Microsoft Access, a RDO — в базе данных SQL Server. Кроме того, у каждого метода свой API или ядро БД.

Прежде чем продолжать чтение, запустите видеоролик Chap05.exe с прилагаемого к книге компакт-диска — он посвящен обзору методов доступа к данным, входящих в арсенал разработчика.



ODBC



ODBC

ODBC — это промышленный стандарт интерфейса для доступа к источникам данных SQL. ODBC преобразует вызовы на языке SQL и вызовы API в формат, понятный SQL-серверу БД. Хотя ODBC также можно настроить для работы с источниками данных ISAM, для этого лучше подходит Jet.



OLEDB



OLEDB

Интерфейс OLE DB обеспечивает интеграцию корпоративных данных в масштабе от мэйнфрейма до настольного компьютера. OLE DB — низкоуровневый набор интерфейсов доступа к информации на основе СОМ, который поддерживает совместную работу источников данных всех типов и размеров. Эти интерфейсы обеспечивают доступ к данным, работу с ними, их непротиворечивость и взаимодействие.

OLE DB — краеугольный камень основанных на СОМ решений для хранения данных и работы с БД. Он расширяет функции традиционных реляционных баз данных, группируя их в логические компоненты и обеспечивая среду для их взаимодействия.



Открытие источника данных напрямую



Открытие источника данных напрямую

Хотя это и не лучший способ, DAO позволяет напрямую открыть ODBC-совмес-тимый источник данных. Для этого нужно создать строку подключения с именем ODBC-драйвера, именем сервера, именем БД, регистрационным идентификатором и паролем. Эта строка используется в качестве параметра при подключении к БД и при создании результирующего набора.



Открытие набора записей



Открытие набора записей

При использовании ADO набор записей открывается методом Open. Подробное описание синтаксиса ADO доступно с помощью средства просмотра объектов Visual Basic.



Перспективы развития ADO



Перспективы развития ADO

ADO в конечном итоге станет расширением RDO 2.0, предоставляющим более развитый интерфейс и обновленную программную модель. Поскольку ADO — это компонент на основе СОМ, он будет доступен любым приложениям, способным работать с объектами СОМ.



Подключение к БД



Подключение к БД

Создав объектную переменную типа Database (и, если нужно, Workspace), Вы можете подключиться к БД средствами метода OpenDatabase.



Подключение к БД средствами ADO



Подключение к БД средствами ADO

В отличие от DAO или RDO, при использовании ADO в коде не обязательно указывать иерархию объектов. Этот метод позволяет не создавать объекты типа Workspace или Database, а напрямую ссылаться на объект типа Recordset. Синтаксис подключения к БД с помощью ADO аналогичен синтаксису RDO.



Подключение к БД средствами RDO



Подключение к БД средствами RDO

В этом упражнении Вы воспользуетесь Visual Basic и RDO для подключения к источнику данных и выполнения запроса. Чтобы упростить Вам жизнь, часть кода мы подготовили заранее. > Открытие проекта Запустите Visual Basic 5.0. В диалоговом окне New Project откройте вкладку Existing. Найдите на диске файл WA\Practice\Ch07\Lab7RDO.vbp и щелкните кнопку Open. В ответ на предложение добавить проект в Visual SourceSafe щелкните кнопку No. В меню Project выберите команду References.

Обратите внимание на заранее созданную ссылку на библиотеку Microsoft Remote Data Object 2.0.

> Подключение к ODBC-совместимому источнику данных Откройте окно кода для события cmdConnect_Click. Добавьте следующий код (он устанавливает соединение средствами RDO):

Set cn = New rdoConnection

With cn

.Connect = "DSN=nwind"

.EstablishConnection rdDriverNoPrompt, False

End With

> Заполнение полей ввода данными из таблицы сотрудников Из списка объектов в окне кода выберите (General). Из списка процедур в окне кода выберите FillTextBoxes. Добавьте в эту процедуру код для заполнения полей ввода аналогично примеру, приведенному ниже.

txtFirstName.Text = rs!firstname

txtLastName.Text = rs!lastname

> Изучение кода приложения Рассмотрите код событий cmdFirst, cmdPrevious, cmdNext и cmdLast. Сохраните проект. Запустите и проверьте приложение.



Подключение приложения к удаленным БД средствами DAO



Подключение приложения к удаленным БД средствами DAO




Подключение средствами DAO



Подключение средствами DAO

Создание надежного приложения для работы с базами данных средствами любого из интерфейсов состоит из нескольких этапов. В частности, для подключения к БД посредством DAO нужно создать ссылку на библиотеку DAO, объявить объектную переменную и затем установить соединение.

Примечание Код примера демонстрирует только один из возможных методов подключения к БД посредством DAO. Имейте в виду, что в этом курсе мы не задавались целью рассказывать о разработке законченных решений.



Подсоединение ODBC-совместимого источника данных



Подсоединение ODBC-совместимого источника данных

Естественный формат данных для Jet — MDB-формат баз данных Microsoft Access. В частности, Jet может подсоединять источники удаленных данных к MDB-файлу, что позволяет применять стандартный код DAO для доступа к информации и работе с ней. Такие источники в Microsoft Access выглядят как связанные таблицы. Этот способ обычно быстрее открытия напрямую, описанного в предыдущем разделе: каталожная информация об удаленном источнике данных кэшируется в MDB-фай-ле, поэтому ее не приходится извлекать повторно.



Получение набора записей при помощи DAO



Получение набора записей при помощи DAO

Набор записей (Recordset) — это данные, которые Вы получаете в результате запроса к БД. Например, если Вы подключились к БД и запросили сведения обо всех покупателях, сделавших более 25 заказов, группа записей, указанная в ответе, и называется набором. Объект Recordset управляет наборами записей, созданными при помощи DAO.



Приложения административного назначения



Приложения административного назначения

Если приложение работает с БД Microsoft SQL Server и применяется только в административных целях — например, для добавления пользователей или управления базой данных — лучше всего воспользоваться интерфейсом SQL-DMO. Для извлечения информации из БД Microsoft SQL Server SQL-DMO не годится.



Применение ODBCDirect



Применение ODBCDirect

ODBCDirect — компонент DAO, реализующий прямой доступ к ODBC-совмести-мым источникам данных посредством DAO-доступа к объектам удаленных данных (Remote Data Objects, RDO). Мы обсудим RDO подробнее в следующем разделе. При открытии ODBC-совместимых источников данных через ODBCDirect модель объектов DAO отделяется от ядра Jet. Этот способ удобен, когда приложение одновременно обращается к хранилищам ISAM и ODBC. ODBCDirect позволяет создать рабочее пространство DAO, которое вызывает удаленные источники данных, не применяя ядро Jet. Как следует из названия, ODBCDirect осуществляет доступ к удаленным источникам данных посредством ODBC, не пользуясь средствами ядра Jet.



В этом фрагменте кода Visual



Пример 1

В этом фрагменте кода Visual Basic объявляется объектная переменная типа Workspase : Dim wrkJet As Workspace
'Создание объекта Microsoft Jet Workspace
Set wrkJet = CreateWorkspace(" ", "admin", " ", dbUseJet)


В этом фрагменте кода Visual



Пример 2

В этом фрагменте кода Visual Basic объявляется объектная переменная типа Database: 'Объявление объектной переменной типа Database
Dim db As Database


В этом коде на Visual



Пример 3

В этом коде на Visual Basic объектная переменная db, объявленная в предыдущем примере, используется для подключения к БД Northwind: 'Открыть базу данных, используя метод OpenDatabase Set db = OpenDatabase("C:\DataBases\Northwind.mdb") Установив соединение с БД, приложение может запрашивать сведения, добавлять новые и удалять существующие записи, а также обновлять данные. Для управления информацией в БД используется объект Recordset. > Создание ссылки на DAO в Visual Basic В этом упражнении Вы создадите код Visual Basic для подключения к БД с помощью DAO. Запустите Visual Basic. Создайте новый проект типа Standard EXE. В меню Project щелкните команду References. Установите ссылку на Microsoft DAO 3.5 Object Library и щелкните кнопку ОК. В меню Project щелкните команду Components. Выделите Microsoft Common Dialog Control 5.0 и щелкните кнопку ОК. Добавьте в форму элемент управления «стандартное диалоговое окно». В процедуре события Load этой формы наберите следующий код: Dim DB As Database
CommonDialog1.ShowOpen
Set DB = OpenDatabase(CommonDialog1.filename)
If Not DB Is Nothing Then
MsgBox "Successfully connected!
Else
MsgBox "Could not connect."
End If
В меню Run щелкните команду Start. Когда появиться стандартное диалоговое окно, откройте файл WA\Practice\ Nwind.mdb. После подключения к БД появится окно с информацией о статусе соединения. Завершите приложение и закройте Visual Basic.

в коде на Visual Basic



Пример 4

Здесь в коде на Visual Basic DAO передается строка подключения к БД pubs SQL Server. Db.Connect =_
"ODBC;Database=pubs;UID=UserName;PWO=Password;DSN=PubsData"
По некоторым причинам этот метод обладает ограниченной производительностью. Jet не всегда эффективно работает с соединением с ODBC-совместимым источником данных. Дело в том, что Jet обрывает соединение после создания результирующего набора, что приводит к дополнительным затратам времени на их восстановление.
Jet не кэширует информацию, поступающую из ODBC-совместимого источника данных. Для доступа к любой информации об объектах источника данных нужно установить соединение и запросить источник данных.


В этом коде на Visual



Пример 5

В этом коде на Visual Basic создаются два объекта БД: один — для подключения к БД Microsoft Access средствами Jet, а другой — для подключения к БД SQL Server средствами ODBCDirect, минуя Jet: Dim wrkJet As Workspace
Dim wrkODBC As Workspace
Dim db As Database
Dim cn As Connection
Dim rs1 As Recordset 'Используется Jet
Dim rs2 As Recordset 'Используется ODBCDirect
'Открыть "рабочие пространства" Microsoft Jet и ODBCDirect
Set wrkJet = CreateWorkspace(" ", "admin", " ", dbUseJet)
Set wrkODBC = CreateWorkspace(" ", "admin", " ", dbUseODBC)
'Подключиться с помощью метода OpenDatabase (Jet)
Set db = wrkJet. OpenDatabase("Northwind.mdb")
'Подключиться с помощью метода OpenConnection (ODBCDirect)
Set cn = wrkODBC.OpenConnection(" ", , , _
"ODBC;DATABASE=pubs;UID=sa;PWD=;DSN=Publishers")
'Открыть набор записей с помощью Jet Set rs1 = db.OpenRecordset
("SELECT * FROM Employees", dbOpenDynaset, dbReadOnly)
'Открыть набор записей с помощью ODBCDirect
Set rs2 = cn.OpenRecordset
("SELECT * FROM stores", dbOpenDynamic)
'Добавьте здесь код для обработки записей
'После обработки записей закройте все соединения
rs1.Close
rs2.Close
db.Close
cn.Close
wrkJet.Close
wrkODBC.Close


В этом коде объявляется новый



Пример 6

В этом коде объявляется новый объект Connection, который затем используется для подключения к БД SQL Server: Set cn = New rdoConnection
With cn
.Connect = "DSN=pubs;UID=sa;PWD="
. EstablishConnection
EndWith

В этом фрагменте на Visual



Пример 7

В этом фрагменте на Visual Basic создается объектная переменная типа Resultset. Результирующий набор создается посредством SQL-запроса: Dim rs As rdoResultset Dim SQL As String SQL = "Select au_frame from Authors" Set rs = cn.OpenResultset(SQL, rdOpenKeyset, rdConcurReadOnly) Примечание Подробное описание возможностей и особенностей реализации RDO выходит за рамки этой книги. Приведенные здесь примеры следует рассматривать только как иллюстрацию подключения к БД средствами RDO.

В этом коде на Visual



Пример 8

В этом коде на Visual Basic средствами ADO устанавливается соединение с базой данных SQL Server: Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "Select * From Authors", "DSN=pubs;UID=sa;PWD="
Do Until rs.EOF
Print rs!au_lname
rs.MoveNext
Loop
rs.Close


RDO и DAO



RDO и DAO

Хотя RDO и DAO проектировались с различными целями, они имеют много общего. Приведенная ниже таблица иллюстрирует сходство основных объектов DAO и RDO.

RDO DAO/Jet
RdoEngine DBEngine
RdoError Error
RdoEnvironment Workspace
RdoConnection Workspace
RdoTable Table Def
RdoResultset Recordset
He реализован Table
Keyset Dynaset
Static Snapshot
Dynamic Нет
Forward-only Forward-only
Cursorless Нет
RdoColumn Field
RdoQuery QueryDef
RdoParameter Parameter
He реализован Relation
He реализован Group
He реализован User



к внешним БД приложение может



Резюме

Для подключения к внешним БД приложение может использовать несколько методов доступа к данным. Они разделены на три категории: файловые/ISAM, ODBC и OLE DB. Тип интерфейса соответствует типу БД. Интерфейсы ISAM предназначены для файловых БД. ODBC ~ это промышленный стандарт доступа к источникам данных SQL. OLE DB — универсальный интерфейс для всех форматов хранения данных.





интерфеис для ядра Jet. Он



Резюме

DAO — это СОМ- интерфеис для ядра Jet. Он обеспечивает эффективный доступ к базам данных ISAM. Однако DAO не предназначен для работы с ODBC, и, как следствие, эффективность его взаимодействия с источниками данных этого типа низка. Для подключения к БД с использованием DAO нужно создать ссылку на библиотеку DAO, объявить объектную переменную и установить соединение. Объект Recordset представляет собой записи базовой таблицы или записи, выбранные в результате выполнения запроса. При использовании DAO все манипуляции с информацией выполняются в основном с помощью объекта Recordset. RDO оптимизирован для работы с источниками данных ODBC, однако сохраняет совместимость с ISAM. Этим методом можно выполнять запросы, возвращающие множественные результирующие наборов, а также ограничивать количество возвращаемых записей и просматривать все сообщения удаленного источника данных, не прерывая выполняющийся запрос. Чтобы подключиться к БД средствами RDO, создайте ссылку на библиотеку RDO и установите соединение с базой данных при помощи объекта Connection. Объект Resultset представляет собой строки, выбранные в результате выполнения запроса к БД. ADO — это интерфейс к OLE DB. Он разработан для доступа к базам данных разных типов. В отличие от DAO и RDO, ADO — расширяемая программная модель, которую можно дополнять сервисами независимых поставщиков для доступа к конкретным базам данных. SQL-DMO — объектная модель на основе СОМ, которая позволяет разработчикам снабдить свои приложения средствами администрирования SQL Server. Используя SQL-DMO, клиентское приложение может манипулировать объектами базы данных — таблицами, хранимыми процедурами и свойствами сервера — через интерфейс СОМ.





к данным, помните, что ни



Резюме

Выбирая метод доступа к данным, помните, что ни один интерфейс не поддерживает все форматы данных. Кроме того, учтите следующие факторы. Формат данных и вероятность их комбинирования: интерфейсы доступа к данным разрабатываются для конкретных форматов, поэтому их производительность заметно различается. Если приложение должно работать с БД разных форматов, может потребоваться несколько интерфейсов. Модернизация продукта: обязательно просчитайте, окупятся ли затраты при переходе на новую технологию или лучше поддерживать прежнюю модель. Время жизни приложения: для краткосрочных решений следует применять интерфейс, обеспечивающий максимум возможностей. Приложения административного назначения: если приложение будет выполнять административные функции, воспользуйтесь интерфейсом SQL-DMO.





Соединение с использованием RDO



Соединение с использованием RDO

Подобно DAO, RDO имеет иерархическую структуру объектов для управления соединениями с базами данных. Для подключения к БД через RDO нужно установить ссылку на RDO, а затем подключиться к БД при помощи объекта Connection.



Создание результирующих наборов средствами RDO



Создание результирующих наборов средствами RDO

Для создания результирующего набора средствами RDO нужно объявить объекты, определить нужный результирующий набор (табличный или результат запроса) и вызвать соответствующий метод.



Создание ссылки на библиотеку DAO



Создание ссылки на библиотеку DAO

Для использования DAO нужно сначала установить ссылку на объектную библиотеку DAO (в настоящее время — Microsoft DAO 3.5 Object Library). Объектная библиотека содержит всю необходимую информацию для разработки кода для DAO. Используемые DAO типы объектов — например, Recordset — не имеют аналогов в

Visual Basic, поэтому, если Вам не удастся создать ссылку на ОАО при попытке объявить необходимые объектные переменные возникнет ошибка



SQL-DMO



SQL-DMO

Объект распределенного управления (Distributed Management Object) Microsoft SQL Server (SQL-DMO) — это объектная модель на основе СОМ, которая позволяет разработчикам снабдить свои приложения средствами администрирования SQL Server. Хотя некоторые административные функции выполняются при помощи хранимых процедур или языков определения данных (Data Definition Languages), SQL-DMO упрощает реализацию этих операций за счет объектной модели.

SQL-DMO позволяет клиентскому приложению манипулировать объектами БД — таблицами, хранимыми процедурами и свойствами сервера — через интерфейс СОМ. SQL-DMO предоставляет приложению следующие возможности: управление таблицами; информацию о правах доступа к серверу; список баз данных на каждом сервере; сценарии всех таблиц.

Примечание SQL Server устанавливает ссылку на библиотеку Microsoft SQL OLE Object Library — ActiveX-интерфейс к SQL-DMO. Посредством SQL-DMO можно получать данные из таблиц SQL Server, однако для этого лучше применять RDO.



Сравнение ADO с RDO и DAO



Сравнение ADO с RDO и DAO

В отличие от RDO, ADO — независимая объектная модель. Это означает, что этот метод позиционируется как интерфейс доступа к данным, заменяющий DAO и RDO. ADO является не конкретной «реализацией» интерфейса доступа к информации, как DAO или RDO, а моделью данных. Расширения версия ADO позволят воспользоваться конкретными функциями различных источников данных (например, средствами ядра Jet).



Ссылка на объектную библиотеку RDO



Ссылка на объектную библиотеку RDO

Как и в случае DAO, прежде чем использовать RDO в приложении, нужно установить ссылку на объектную библиотеку (текущая версия — Microsoft Remote Data Object 2.0).



Связь RDO с ODBC



Связь RDO с ODBC


RDO обеспечивает значительно большую производительность и гибкость доступа к удаленным СУБД, чем DAO. Хотя этот метод позволяет получить доступ к любому ODBC-совместимому источнику данных, он оптимизирован для работы с серверами БД, использующими развитые средства запросов (например, Microsoft SQL Server или Oracle).

RDO имеет ряд преимуществ перед DAO и ODBCDirect при подключении к ODBC-совместимым источникам данных. Он позволяет выполнять запросы, возвращающие множественные результирующие наборы, и хранимые процедуры, возвращающие результирующие наборы. Последние подобны набору записей в DAO. Средствами RDO можно ограничить количество возвращаемых записей БД, а также отслеживать все сообщения удаленного источника данных, не затрагивая выполняющийся запрос. RDO поддерживает синхронные и асинхронные операции; в результате приложение не блокируется при выполнении длительного запроса.



Установка ссылки на ADO



Установка ссылки на ADO

Как и в случае работы DAO и RDO, приложение должно сначала получить ссылку на объектную библиотеку ADO (текущая версия — Microsoft ActiveX Data Objects 1.5 Library).



Время жизни приложения



Время жизни приложения

Если Вы создаете краткосрочное решение, разумно воспользоваться интерфейсом, обеспечивающим максимум возможностей (например, RDO 2.0).



Закрепление материала



Закрепление материала

Приведенные ниже вопросы помогут Вам лучше усвоить основные темы данной главы. Если Вы не сумеете ответить на вопрос, повторите материал соответствующего занятия. Правильные ответы приведены в разделе «Вопросы и ответы» в конце книги. Какой интерфейс обеспечивает наилучшее сочетание возможностей и производительности при работе с ODBC-совместимой базой данных?

ответ

Каковы преимущества OLE DB?

ответ

Для чего предназначен объект DAO Recordset?

ответ

Каково назначение ODBCDirect?

ответ

Какие платформы поддерживает RDO?

ответ

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

ответ

Вы разрабатываете приложение, которое должно извлекать данные из БД Microsoft Access и SQL Server. Каков наилучший метод доступа?

ответ







Основные интерфейсы



Занятие 1. Основные интерфейсы

(Продолжительность занятия 10 минут) Для подключения к внешним БД приложение может использовать несколько методов доступа к информации, основанных на соответствующем интерфейсе. Последние разделены на три категории: файловые (включая ISAM), ODBC и OLE DB (тип интерфейса соответствует типу БД). Из этого занятия Вы узнаете о трех основных интерфейсах, используемых для соединения с внешними базами данных. Изучив материал этого занятия, Вы сможете: сравнить и сопоставить три основных интерфейса подключения к внешним базам данных.

Методы доступа к данным



Занятие 2. Методы доступа к данным

(Продолжительность занятия 90 минут) Разработчика больше всего интересует метод доступа, который лучше других подойдет конкретному приложению для работы с БД. Выбор зависит от типа используемой базы данных и от функций, которые должно реализовать приложение. На этом занятии Вы познакомитесь со множеством методов доступа к информации, включая DAO, RDO, ADO и SQL-DMO. Кроме того. Вы узнаете, как для каждого метода выполнить подключение к БД, создать результирующий набор данных и возвратить его клиенту. Изучив материал этого занятия, Вы сможете: сопоставить объекты доступа к данным (Data Access Objects, DAO), объекты удаленных данных (Remote Data Objects, RDO) и объекты данных ActiveX ( ActiveX Data Objects, ADO); перечислить особенности реализации основных интерфейсов доступа к данным; подключиться к источнику данных и получить записи, используя DAO, RDO, ADO; описать назначение SQL-DMO.

Выбор подходящего метода



Занятие 3. Выбор подходящего метода

(Продолжительность занятия 15 минут) Выбирая метод доступа к данным, Вы должны выяснить, в каком формате хранится информация и возможно ли наличие нескольких форматов. Кроме того, надо учитывать некоторые различия между новыми разработками и модернизацией существующих продуктов, время жизни приложения и его назначение (приложения административного назначения обладают некоторой спецификой). Это занятие посвящено принципам выбора метода доступа к данным. Изучив материал этого занятия, Вы сможете: выбрать метод доступа к данным, соответствующий Вашим потребностям.