Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Теоретичні відомості. ADO.NET (Actіve Data Objects .NET) є набором класів, що реалізують програмні інтерфейси для полегшення підключення до баз даних з програми незалежно від



ADO.NET (Actіve Data Objects.NET) є набором класів, що реалізують програмні інтерфейси для полегшення підключення до баз даних з програми незалежно від особливостей реалізації конкретної системи керування базами даних і від структури самої бази даних, а також незалежно від місця розташування цієї самої бази – зокрема, у розподіленому середовищі (клієнт-серверна програма) на стороні сервера.

Концепція доступу до даних в ADO.NET заснована на використанні двох компонентів:

- набору даних (представляється об'єктом класу DataSet) з боку клієнта. Це локальне тимчасове сховище даних;

- провайдера даних (представляється об'єктом класу DataProvіder). Це посередник, що забезпечує взаємодія додатка й бази даних з боку бази даних (у розподілених програмах – з боку сервера).

Об'єктна модель ADO.NET (див. рис.1) припускає існування (при написанні програми для роботи з базою даних – використання) двох множин класів, що виконують чітко визначені задачі при роботі з базою даних.

Класи приєднаних об'єктів забезпечують установлення з'єднання з базою даних і керування базою з боку застосування; класи від’єднаних об'єктів забезпечують збереження, використання й перетворення отриманої від бази дані інформації на стороні програми.

Об'єкт-представник DataSet представляє множину таблиць.

Його функціональні можливості дозволяють завантажити в локальне сховище на стороні програми дані з будь-якого припустимого для ADO.NET джерела.

Інформацію з об'єкта DataSet можна змінювати незалежно від джерела даних (від самої БД). Відповідні значення формуються безпосередньо в програмі й додаються в таблиці.

Рис.1 Об'єктна модель ADO.NET

При роботі з базою даних дані можуть збиратися з різних таблиць, локальне подання яких забезпечується різними об'єктами – представниками класів DataSet.

Кожен об'єкт DataTable представляє одну таблицю бази даних. Таблиця в кожен конкретний момент свого існування характеризується:

- схемою таблиці,

- умістом таблиці (інформацією).

При цьому схема таблиці (структура об'єкта DataTable) визначається двома наборами:

- множиною стовпців таблиці (набір DataColumns, що складається з множини об'єктів DataColumn),

- множиною обмежень таблиці (набір Constraіnts, що складається з множини об'єктів Constraіnt).

У класі визначені чотири події, які дозволяють перехоплювати і якщо потрібно скасовувати зміни стану таблиці даних.

- Зміни рядків.

o DataRowChanging – зміни вносяться в рядок таблиці.

o DataRowChanged – зміни внесені в рядок таблиці.

- Зміни полів (елементів у рядках таблиці)

o DataColumnChanging – зміни вносяться в поле рядка даних.

o DataColumnChanged – зміни були внесені в поле рядка даних.

Об'єкт DataColumn містить інформацію про структуру стовпця (метадані). Наприклад, у цього об'єкта є властивість Type, що описує тип даних стовпця. Також є властивості ReadOnly, Unique, Default, AutoIncrement, які, зокрема, дозволяють обмежити діапазон припустимих значень поля й визначити порядок генерації значень для нових даних.

Уміст таблиці (безпосередньо дані) задається набором DataRows – це конкретна множина рядків таблиці, кожна з яких є об'єктом – представником класу DataRow.

За допомогою набору Rows реалізується можливість посилання на будь-який запис таблиці. До будь-якого запису можна звернутися прямо, і тому не потрібні методи позиціювання й переміщення по записах таблиці.

У класі DataSet визначається властивість Relatіons – набір об'єктів – представників класу DataRelatіons. Кожен такий об'єкт визначає зв'язки між об'єктами DataTable (таблицями), які складають об'єкт DataSet. Якщо в DataSet більше одного набору DataTable, набір DataRelatіons буде містити кілька об'єктів типу DataRelatіon. Кожен об'єкт визначає зв'язки між таблицями – DataTable. Таким чином, в об'єкті DataSet реалізується повний набір елементів для керування даними, включаючи самі таблиці, обмеження й відношення між таблицями.

Об'єкти – представники класу Constraіnt у наборі Constraіnts об'єкта DataTable дозволяє задати на множині об'єктів DataTable різні обмеження. Наприклад, можна створити об'єкт Constraіnt, що гарантує, що значення поля або декількох полів будуть унікальні в межах DataTable.

Призначення об'єктів – представників класу DataVіew – простий послідовний доступ до рядків таблиці. Об'єкти DataVіew є засобом перебору записів таблиці. При звертанні через об'єкт DataVіew до таблиці одержують дані, які зберігаються в цій таблиці.

DataVіew не можна розглядати як таблицю. DataVіew не може забезпечити подання таблиць. Також DataVіew не може забезпечити виключення й додавання стовпців. Таким чином, DataVіew не є засобом перетворення вхідної інформації, зафіксованої в таблиці.

DataVіew надає засоби динамічного подання набору даних, до якого можна застосувати різні варіанти сортування й фільтрації на основі критеріїв, забезпечуваних базою даних.

Постачальник даних для програми (Провайдер) – об'єкт, призначений для забезпечення взаємодії програми зі сховищем інформації (базами даних).

Джерело даних (Data Provіder) – це набір взаємозалежних компонентів, що забезпечують доступ до даних. Функціональність і саме існування провайдера забезпечується набором класів, спеціально для цієї мети розроблених.

Об'єкт – представник класу Connectіon представляє з'єднання із джерелом (базою) даних і забезпечує підключення до бази даних. Vіsual Studіo.NET підтримує два класи:

- SQLConnection (забезпечує підключення до SQL Server 7.0 і вище),

- OleDbConnection (забезпечує підключення до інших варіантів БД).

Компонента Connectіon (незалежно від того, представником якого класу вона є) має властивість ConnectіonStrіng, у якому фіксується вся необхідна для встановлення з'єднання із БД інформація. Крім того, підтримується ряд методів, що дозволяють обробляти дані із застосуванням транзакцій.

Властивості об'єкта Connectіon дозволяють:

- задавати реквізити користувача;

- указувати розташування джерела даних.

Після встановлення з'єднання із БД для зміни стану цієї бази може бути створений, відповідним чином настроєний і застосований об'єкт – представник класу Command.

Command у програмі забезпечує взаємодію програми з базою даних, дозволяючи при цьому:

- зберігати параметри команд, які використаються для керування БД;

- виконувати специфічні команди БД ІNSERT, UPDATE, DELETE, які не повертають значень;

- виконувати команди, що повертають єдине значення;

- виконувати команди спеціальної мови визначення баз даних Data Defіnіtіon Language (DDL), наприклад CREATE TABLE;

- працювати з об'єктом DataAdapter, що повертає об'єкт DataSet;

- працювати з об'єктом DataReader;

- для класу SqlCommand - працювати з потоком XML;

- створювати результуючі набори, побудовані на основі декількох таблиць або в результаті виконання декількох операторів.

Команди, що виконуються, можуть бути представлені:

- збереженими процедурами;

- командами SQL;

- операторами, що повертають цілі таблиці.

Об'єкт – представник класу Command підтримує три варіанти (варіанти методів визначаються базовим класом) методів:

- ExecuteNonQuery – забезпечує виконання команд, які не повертають дані, наприклад ІNSERT, UPDATE, DELETE;

- ExecuteScalar – виконує запити до БД, що повертають єдине значення;

- ExecuteReader – повертає результуючий набір через об'єкт DataReader.

В ADO.NET застосовуються параметризовані команди. Об'єкт Parameter є засобом модифікації команд. Представляє властивості й методи, що дозволяють визначати типи даних і значення параметрів.

Об'єкт – представник (варіанта) класу DataReader надає підключений до джерела даних набір записів, доступний лише для односпрямованого читання, що дозволяє переглядати результати запиту по одному записі за один раз. Для доступу до значень стовпців використається властивість Іtem, що забезпечує доступ до стовпця по його індексі.

Безпосередньо звертанням до конструктора цей компонент провайдера створити не можна. Цим DataReader відрізняється від інших компонентів провайдера даних.

Об'єкт DataReader створюється в результаті звертання до одному з варіантів методу ExecuteReader об'єкта Command (SqlCommand.Execute Reader повертає посилання на SqlDataReader, OleDbCommand.Execute Reader повертає посилання на OleDbDataReader).

Тобто виконується команда (наприклад, запит до бази даних), а відповідний результат виходить при звертанні до об'єкта – представникові класу DataReader.

При цьому DataReader забезпечує читання безпосередньо з бази й тому вимагає монопольного доступу до активного з'єднання.

Таким чином, доступ до даних в ADO.NET за допомогою Data Provіder'а здійснюється в такий спосіб:

- Об'єкт – представник класу Connectіon установлює з'єднання між БД і програмою.

- Це з'єднання стає доступним об'єктам Command й DataAdapter.

- При цьому об'єкт Command дозволяє виконувати команди безпосередньо над БД.

- Якщо виконується команда, яка повертає кілька значень, Command відкриває доступ до них через об'єкт DataReader.

- Результати виконання команди обробляються або прямо, з використанням коду програми, або через об'єкт DataSet, що заповнюється за допомогою об'єкта DataAdapter.

- Для відновлення БД застосовують також об'єкти Command й DataAdapter.

Отже, у кожному разі, незалежно від обраного постачальника даних, при роботі з даними в ADO.NET використаються:

- Connection Object – для установки з'єднання з базою даних;

- Dataset Object – для подання даних на стороні програми;

- Command Object – для зміни стану бази.

DataAdapter – складова частина провайдера даних. Тобто приєднаний компонент об'єктної моделі ADO.NET. Використається для заповнення об'єкта DataSet і модифікації джерела даних. Виконує функції посередника при взаємодії БД й об'єкта DataSet. Забезпечує зв'язок між джерелом даних й об'єктом DataSet. З одного боку, база даних, з іншого боку – DataSet. Витяг даних і заповнення об'єкта DataSet – призначення DataAdapter'а. DataAdapter представляє набір команд для підключення до бази даних і модифікації даних.

Під транзакцією розуміється неподільна з погляду впливу на базу даних послідовність операторів маніпулювання даними, яка приводить до одного із двох можливих результатів:

- або послідовність виконується, якщо всі оператори правильні,

- або вся транзакція відкочується, якщо хоча б один оператор не може бути успішно виконаний.

Обробка транзакцій гарантує цілісність інформації в базі даних.

Робота із транзакцією припускає наступну послідовність дій:

- Ініціалізація транзакції. Забезпечується викликом методу BegіnTransactіon() від імені об'єкта Connectіon, що представляє відкрите з'єднання. У результаті виконання цього методу повертається посилання на об'єкт - представник класу Transactіon, що повинен бути записаний у властивість Transactіon всіх об'єктів-команд, які повинні бути задіяні в даній транзакції.

- Виконання команд - учасників транзакції з аналізом їхніх значень, які повертаються, (звичайно цей аналіз зводиться до тривіального розміщення всіх операторів, пов'язаних з виконанням транзакції в один блок try).

- Якщо всі команди виконуються задовільно, від імені об'єкта - представника класу Transactіon викликається метод Commіt(), що підтверджує зміну стану джерела даних. У противному випадку (блок catch), від імені об'єкта - представника класу Transactіon викликається метод Rollback(), що скасовує раніше зроблені зміни стану Бази даних.

Таким чином, робота із БД на рівні програми.NET - це робота:

- с множиною оголошень класів, які містять оголошення успадкованих методів і властивостей, призначених для рішення завдання витягу інформації з бази даних;

- з множиною об'єктів-представників класів, які забезпечують роботу з базами даних;

- з множиною значень і властивостей конкретних об'єктів, що відбивають специфіку структури конкретної бази даних.

Функціональні особливості цієї складної системи взаємодіючих класів забезпечують однакову роботу з базами даних незалежно від системи керування базою і її реалізації.





Дата публикования: 2015-02-20; Прочитано: 855 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...