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

0

ИСХОДНЫХ ТИПОВ money И smalmoney

Nchar

adWChar

(string)

ADO использует один и тот же эквивалент типа данных для ИСХОДНЫХ ТИПОВ nchar, ntext, nvarchar И sysname. Среда .NET Framework для представления всех символьных данных использует таблицу Unicode (UTF-16)

Ntext

adWChar

(string)

Этот тип данных может быть настолько большим, что может не поместиться в памяти. Утечки памяти могут вызвать ошибки поставщика и, возможно, только частичный возврат данных. Когда такое случается, разработчик должен создавать специальные процедуры для извлечения данных по частям. ADO использует один и тот же эквивалент типа данных ДЛЯ ИСХОДНЫХ ТИПОВ nchar. ntext, nvarchar И sysname. Среда .NET Framework для представления всех символьных данных использует таблицу Unicode (UTF-16)

Numeric

adNumeric

(decimal)

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

ИСХОДНЫХ ТИПОВ decimal И numeric

Nvarchar

adWChar

(string)

ADO использует один и тот же эквивалент типа данных для ИСХОДНЫХ ТИПОВ nchar, ntext, nvarchar И sysname. Среда .NET Framework для представления всех символьных данных использует таблицу Unicode (UTF-16)

NvarChar(max)

Отсутствует

(string)

SQL Server 2005 использует один эквивалент типа данных для бывшего типа Nvarchar, если объем данных не превышал 8 Кбайт, или text, если превышал. Среда .NET Framework для представления всех символьных данных использует таблицу Unicode (UTF-16)

Real

adSingle (Single)

Smalldatetime

adTimeStamp

(DateTime)

Smallint

adSmalllnt

(Intl6)

Тип данных SQL Server

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

Примечания

Smallmoney

adCurrency

(Decimal)

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

ИСХОДНЫХ ТИПОВ money И smallmoney

sql_variant

adVariant

(object)

Этот тип может содержать данные любого из множества примитивных типов, таких как smallint, float или char. Он не способен хранить большие объемы данных, такие как ТИПЫ text, ntext И image. Тип adVariant отображается на тип dbtype_variant интерфейса OLE DB и пригоден к использованию только в SQL Server 2000. Будьте осторожны при использовании этого типа данных, поскольку это может привести к непредсказуемым результатам. Несмотря на то что OLE DB полностью поддерживает данный тип, того же нельзя сказать о ADO

Sysname

adWChar

(string)

ADO использует один и тот же эквивалент типа данных для ИСХОДНЫХ ТИПОВ nchar, ntext, nvarchar И sysname. Среда .NET Framework для представления всех символьных данных использует таблицу Unicode (UTF-16)

Text

adChar

(string)

Этот тип данных может быть настолько большим, что может не поместиться в памяти. Утечки памяти могут вызвать ошибки поставщика и, возможно, только частичный возврат данных. Когда такое случается, разработчик должен создавать специальные процедуры для извлечения данных по частям. ADO использует один и тот же эквивалент типа данных для исходных типов char, text и varchar. Среда .NET Framework для представления всех символьных данных использует таблицу Unicode (UTF-16)

Timestamp

Tinyint

adBinary (byte [])

adTinylnt

(byte)

ADO использует один и тот же эквивалент типа данных для ИСХОДНЫХ ТИПОВ binary И timestamp

Uniqueidentifier adGUID(Guid)

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

Varbinary

adVarbinary (byte [])

ADO использует один и тот же эквивалент типа данных для исходных ТИПОВ image И varbinary

Varbinary (MAX)

Отсутствует (byte [])

SQL Server 2005 использует один эквивалент типа данных для бывшего типа varbinary, если объем данных не превышал 8 Кбайт, или image, если превышал

Varchar

adChar

(string)

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

Тип данных SQL Server

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

Примечания

Varchar(MAX)

Отсутствует

(string)

SQL Server 2005 использует один эквивалент типа данных для бывшего типа varchar, если объем данных не превышал 8 Кбайт, или text, если превышал. Среда .NET Framework для представления всех символьных данных использует таблицу Unicode

Примечания в табл. 30.2 затрагивают только самые существенные проблемы, которые могут возникнуть при отображении данных между ADO и SQL Server. Очень важно также принимать во внимание ошибки преобразования данных. Все непрямые преобразования данных могут стать причиной потери данных. Например, ни поставщики, ни SQL Server не сгенерируют ошибку, если 8-байтовое число преобразуется в 4-байтовое; в то же время при этом совершенно очевидна вероятность потери данных. К тому же некоторые типы не могут быть преобразованы в другие. Например, невозможно преобразовать тип данных adBinary в adSmalllnt. В этой ситуации среда разработки укажет на ошибку. Следует также отметить, что порядок сортировки символьных типов данных SQL, принятый по умолчанию, отличается от порядка сортировки типов данных .NET.

Среда .NET Framework добавляет еще один уровень потенциальных ошибок преобразования в реализацию ADO. Типы данных модели ADO определены в ее объектах. Среда .NET Framework преобразует эти типы данных в допустимые типы данных .NET неявно, если они используются в программе вне объектов ADO. Такое преобразование не требует явного определения, хотя на практике всегда рекомендуется иметь гарантию того, что данные всегда будут иметь ожидаемый тип. При программировании с использованием ADO, даже в среде .NET Framework, разработчик должен неустанно следить за преобразованием данных. Использование типов данных .NET, поддерживающих пустые значения, во многих приложениях открывают новые горизонты для проблем преобразования. Похоже, не существует идеального решения этой проблемы; остается только следовать стандартам среды, которые определяют связные методики программирования, и тщательно тестировать приложения.

Чтобы избежать неожиданных преобразований в операциях присвоения, следует явно назначать нужные типы данных ADO.

ADO и сценарии

Объектная модель ADO часто используется в сценариях различных типов. Так как ADO основана на технологии СОМ, любой язык сценариев, способный создать объект, может использовать ADO для извлечения информации из базы данных. Использование сценариев для выполнения небольших задач имеет смысл, поскольку при необходимости они могут быть легко модифицированы, к тому же их легко создавать. Имейте в виду, что некоторые инструменты сценариев, такие как Windows Script Components, могут быть созданы с помощью VB.NET и C# и на них может быть установлена ссылка. К тому же Windows Scripting Host запускает ADO только как компонент СОМ. Интероперабельность в .NET не применяется.

Как вы помните из главы 27, исходный программный код .NET компилируется в код MSIL. Так как компиляция в MSIL может выполняться в любой момент перед запуском про-

граммы, концепция позднего связывания недоступна в программном коде .NET. В противоположность этому реализации ADO, основанные на сценариях, такие как Windows Scripting Host 5.6, SQL Server 2000 DTS ActiveX и ASP-страницы, предшествующие появлению платформы .NET, требуют позднее связывание. Позднее связывание предполагает, что объект СОМ. на который имеется ссылка, создается во время выполнения и инициализируется с помощью функции CreateObj ect (). Таким образом, для использования в сценариях ADO на всех компьютерах, на которых будет выполняться сценарий, должен быть установлена MDAC. В противоположность этому ADO.NET полностью поддерживается клиентом SQL Native Client и не требует установки MDAC. Это важная отличительная черта ADO.NET 2.0 более подробно будет рассмотрена немного позже в этой главе.

Естественно, языки сценариев не обеспечивают надежную интерактивную среду, как языки программирования типа C# или Visual Basic и даже ASP.NET. Лучше ограничить использование сценариев только малыми задачами, такими как вызов хранимой процедуры для автоматического выполнения некоторого задания или извлечение результатов запроса к данным для их отображения на экране.

Компании Microsoft следовало бы продемонстрировать гибкость объектной модели ADO при ее использовании с различными языками (такими как Java, JavaScript, VBScript и основанным на XML Windows Script Component), доступными в Visual Studio 2005.

AD0.NET

Несколько странно, что в первой части названия ADO.NET используется название модели ADO (аббревиатура от ActiveX Data Objects). Термин ActiveX служит явным сигналом, что используется прототип IUnknown и технология COM. IUnknown — это прототип всех классов СОМ. В своей оригииальной форме он указывает на то, что вызывающему модулю ничего не нужно знать о вызываемом объекте. При этом вызывающий модуль сохраняет способность активно взаргмодействовать с вызываемым объектом. Несмотря на то что в недрах среды .NET продолжает существовать возможность программирования компонентов СОМ, в целом платформа .NET Framework и общеязыковая среда выполнения CLR отошли от ограничений среды выполнения СОМ в направлении согласованности объектно-ориентированной модели классов. Использование прототипа IUnknown подразумевает, что о классе не обязательно что-либо знать, чтобы создавать его экземпляры и использовать их. Среда .NET Framework предполагает, что системные сборки и базовые классы являются надежными и согласованными типами. Короче говоря, с технической точки зрения ADO и ADO.NET мало что связывает.

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

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

По теме:

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