Главная » Microsoft SQL Server, Базы данных » Обзор AD0.NET – ЧАСТЬ 3

0

словами, если используются такие поставщики от Microsoft, как ODBC или OLE DB, не следует ожидать возникновения каких-либо проблем. Если же используется сторонний поставщик OLE DB, может понадобиться ознакомиться с документацией производителя перед тем, как предполагать защищенность потоков в ADO (это требование к использованию ADO в Интернете и корпоративных сетях).

‘         ODBC (аббревиатура от Open Database Connectivity) — одна из технологий под-

На заметку ключения приложений к базам данных, которая гораздо старше OLE DB. В от- личие от последней, ODBC создавалась для подключения только к источникам данных СУБД. В то же время драйвер ODBC включен в SNAC.

Для работы с ADO используется небольшое множество объектов. В табл. 30.1 перечислены эти объекты и кратко описаны методы их использования. Большая часть из этих типов объектов имеет своих двойников в предыдущих технологиях, представленных компанией Microsoft. Одновременно с этим уровень функциональности объектов ADO значительно выше, чем предлагался более ранними технологиями, и, как будет продемонстрировано ниже, потенциальные возможности, реализуемые более современными технологиями, такими как ADO.NET и XML, превосходят даже ADO.

Таблица 30.1. Обзор объектов ADO

Объект

Описание

Connection

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

Error

ADO создает объект ошибки как часть объекта подключения. Этот объект содержит дополнительную информацию об ошибке, сгенерированной поставщиком OLE DB. Один объект Error может содержать информацию о нескольких ошибках. Каждый объект ассоциирован с конкретным событием, таким как подтверждение транзакции

Command

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

Parameter

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

RecordSet

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

Record

Запись — это одна строка данных. Она может быть обособленной, а может управляться и набором данных

Field

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

Stream

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

Property

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

В объектной модели ADO также существуют четыре коллекции объектов: Errors, Parameters, Fields и Properties. Обратите внимание на то, что эти коллекции служат своеобразными контейнерами для соответствующих дочерних объектов. Не существует коллекций в корне объектной модели, и модель никогда не имеет больше двух уровней в глубину. Структура объектной модели — последовательная и простая и всегда имеет следующую структуру:

Родительский объект^ Коллекция зависимых объектов ^Дочерний объект

Поставщики данных OLE DB

Даже когда ADO используется посредством предоставленной первичной intemp-сборки .NET, все операции доступа к данным выполняются с использованием одного из доступных поставщиков данных OLE DB. Поставщик данных управляет подключением клиента к СУБД с помощью множества объектов. Естественно, это значит, что поставщик данных требует указания источника информации для определения специфики создаваемого подключения. В общем случае поставщик специфичен для типа базы данных и предоставляет механизм конфигурирования конкретной базы данных. На рис. 30.3 показан типичный список поставщиков баз данных. Некоторые поставщики в этом списке являются узкоспециализированными.

Источник объекта OLE DB называют поставщиком. Таким образом, ADO расценивает поставщика как источник данных. Даже в современном мире господства среды .NET Framework количество поставщиков OLE DB, специализированных под конкретные источники данных, больше, чем когда бы то ни было.

Следует особо отметить одну прекрасную особенность, касающуюся OLE DB, — один и тот же поставщик может работать с разными языками программирования Visual Studio.

В общем случае (особенно это касается конструкторов баз данных) всегда лучше использовать поставщика, специфичного для SQL Server. Несмотря на то что поставщики общего назначения также способны справиться с работой, компания Microsoft оптимизировала работу поставщика SQL Server для работы с этой конкретной СУБД, и отличия его производительности по сравнению с поставщиком общего назначения разительны.

Чтобы узнать, какие поставщики данных доступны на конкретном компьютере, Совет    создайте текстовый файл и переименуйте его с использованием расширения

.udl (например, в temp.udl; имя в данном случае не имеет значения, глав-

*             ное — расширение). Откройте файл, и вы увидите диалоговое окно, аналогичное показанному на рис. 30.3. В нем будут перечислены все поставщики OLE DB, локально установленные на данном компьютере.

Отображение типов данных

При работе исключительно в SQL Server основной задачей является выбор оптимального типа данных для конкретных требований к хранению данных. В то же время при перемещении информации из СУБД клиенту с помощью поставщика данных появляется несколько промежуточных уровней. В некоторых СУБД это представляет существенную проблему, так как поставщики общего назначения, входящие в OLE DB. не поддерживают множество специализированных типов данных. В любом поставщике затраты на преобразование типов данных, необходимые для прохождения всех этих уровней, значительны. Эта проблема типов данных является еще одним поводом использовать в работе с ADO специфичные для SQL Server поставщики данных OLE DB.

При использовании данных из таблиц SQL Server в клиентском приложении поставщик должен отобразить тип данных, который понимает SQL Server, на тип данных, который понимает приложение. К счастью для разработчиков SQL Server, отображение ADO для поставщика SQLOLEDB относительно простое. В табл. 30.2 показано, как SQL Server отображает типы данных ADO. Одна из проблем возникает, когда ADO использует один и тот же свой тип для представления двух или трех типов данных SQL Server, в то время как в интерфейсе пользователя последние должны отображаться с разным форматированием. Полный набор типов данных SQL Server 2005 представлен в клиенте SQL Native Client. Объектная модель ADO знает только типы данных SQL Server 2000 — она не способна работать с новыми типами, такими как XML или varchar (max), о которых мы поговорим немного позже в этой главе.

В табл. 30.2 перечислены типы данных SQL Server 2005 и эквивалентные им типы данных ADO наряду с соответствующей функцией преобразования, с помощью которой среда .NET Framework будет управлять каждым из типов ADO.

Таблица 30.2. Отображение данных SQL Server в AD0/AD0.NET

Тип данных SQL Server

Тип данных ADO (тип данных .NET Framework)

Примечания

Bigint

adBiglnt

(int64)

Тип bigint имеет диапазон значений от -2Л63 (-9223372036854775807) до 2"63-1 (9223372036854775807). Эти значения доступны только в SQL Server 2000, однако поставщик OLE DB будет пытаться отправить его и в более старые версии сервера, в результате теряя данные. Используйте тип adBiglnt только в случае крайней необходимости и с большой осторожностью

Binary

adBinary (byte [])

ADO использует один и тот же эквивалент типа данных для

ИСХОДНЫХ ТИПОВ binary и timestamp

Bit

adBoolean

(intl6)

Несмотря на то что это преобразование работает всегда, между данными типами существуют определенные различия. Например, тип bit может иметь значения о, 1 И NULL, В ТО время как adBoolean — ТОЛЬКО true И false

Char

adChar

(string)

ADO использует один и тот же эквивалент типа данных для исходных типов char, varchar и text. Среда .NET Framework для представления всех символьных данных использует таблицу Unicode

Datetime

adDBTimeStamp

(DateTime)

По умолчанию точность типа Date time в SQL Server составляет 3,33 миллисекунды

Decimal

adNumeric

(Decimal)

ADO использует один и тот же эквивалент типа данных для исходных типов decimal и numeric

Тип данных SQL Server

Тип данных ADO (тип данных .NET Framework)

Примечания

Float

adDouble

(Double)

Image

adVarbinary (byte [])

Этот тип данных может быть настолько большим, что может не поместиться в памяти. Утечки памяти могут вызвать ошибки поставщика и, возможно, только частичный возврат данных. Когда такое случается, разработчик должен создавать специальные процедуры для извлечения данных по частям. ADO использует один и тот же эквивалент типа данных для ИСХОДНЫХ ТИПОВ image, tinyint И varbinary

Int

adlnteger

(Int32)

Money

adCurrency

(Decimal)

ADO использует один и тот же эквивалент типа данных для

Источник: Нильсен, Пол. Microsoft SQL Server 2005. Библия пользователя. : Пер. с англ. — М. : ООО “И.Д. Вильямс”, 2008. — 1232 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии