Огляд AD0.NET – ЧАСТИНА 4

ВИХІДНИХ ТИПІВ 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

Примітки в табл 302 зачіпають лише найсуттєвіші проблеми, які можуть виникнути при відображенні даних між 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, можуть бути створені за допомогою VBNET і C # і на них може бути встановлено посилання До того ж Windows Scripting Host запускає ADO тільки як компонент СОМ Інтероперабельность в NET не застосовується

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

грами, концепція пізнього звязування недоступна в програмному коді NET На противагу цьому реалізації ADO, засновані на сценаріях, такі як Windows Scripting Host 56, SQL Server 2000 DTS ActiveX і ASP-сторінки, що передували появі платформи NET, вимагають пізніше звязування Пізніше звязування припускає, що обєкт СОМ на який є посилання, створюється під час виконання і инициализируется за допомогою функції CreateObj ect () Таким чином, для використання в сценаріях ADO на всіх компютерах, на яких буде виконуватися сценарій, повинен бути встановлена ​​MDAC На противагу цьому ADONET повністю підтримується клієнтом SQL Native Client і не вимагає установки MDAC Це важлива відмінна риса ADONET 20 більш детально буде розглянута трохи пізніше в цій главі

Природно, мови сценаріїв не забезпечують надійну інтерактивну середу, як мови програмування типу C # або Visual Basic і навіть ASPNET Краще обмежити використання сценаріїв тільки малими завданнями, такими як виклик збереженої процедури для автоматичного виконання деякого завдання або витяг результатів запиту до даних для їх відображення на екрані

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

AD0NET

Дещо дивно, що в першій частині назви ADONET використовується назва моделі ADO (абревіатура від ActiveX Data Objects) Термін ActiveX служить явним сигналом, що використовується прототип IUnknown і технологія COM IUnknown – це прототип всіх класів СОМ У своїй орігііальной формі він вказує на те, що зухвалому модулю нічого не потрібно знати про викликається обєкті При цьому викликає модуль зберігає здатність активно взаргмодействовать з викликуваним обєктом Незважаючи на те що в надрах середовища NET продовжує існувати можливість програмування компонентів СОМ, в цілому платформа NET Framework і загальномовне середу виконання CLR відійшли від обмежень середовища виконання СОМ в напрямку узгодженості обєктно-орієнтованої моделі класів Використання прототипу IUnknown увазі, що про клас не обовязково що-небудь знати, щоб створювати його екземпляри і використовувати їх Середа NET Framework припускає, що системні збірки і базові класи є надійними і узгодженими типами Коротше кажучи, з технічної точки зору ADO і ADONET мало що повязує

Тільки з функціональної точки зору ADONET є продуктом природної еволюції обєктної моделі ADO Для подолання обмежень продуктивності і масштабованості моделі ADO потрібна була нова технологія-та, яка забезпечить розробника масою різноманітних варіантів виконання операцій ADONET розроблялася одночасно як для подолання обмежень ADO, так і для підняття процесу розробки програм на новий рівень У ADONET можна знайти базові обєкти ADO Команди, що виконуються в підключеннях до постачальників даних, тільки злегка відрізняються в ADONET від тих же команд ADO У той Водночас у ADONET розробники мають більший контроль над витягом та маніпуляціями даними Виконання може бути асинхронним і пакетним Результати можуть зберігатися та оброблятися в додатках, відключених від бази даних Як альтернатива результати можуть бути перетворені в потік двійкових даних або XML

Джерело: Нільсен, Пол Microsoft SQL Server 2005 Біблія користувача : Пер з англ – М: ООО ІД Вільямс , 2008 – 1232 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*