Доступ до даних за допомогою ADO.NET, Інтеграція додатків і даних, Бази даних, статті

Технологія ADO.NET забезпечує власний рівень доступу до даних в середовищі. NET. Ця стаття є першою в серії, присвяченої ADO.NET. В ній обговорюється механізм доступу до даних.


До недавнього часу процесор баз даних Borland Database Engine підтримував практично всі види доступу до даних, реалізовані в засобах швидкої розробки додатків (RAD) компанії Borland. Починаючи з Delphi 3, були додані додаткові механізми доступу до даних, включаючи технології ClientDataSet і DataSnap (раніше відома, як MIDAS). Що стосується Delphi 7, то цей продукт має вбудованої підтримкою не менше 6 різних механізмів доступу до даних, не вважаючи рішень сторонніх фірм. Серед них одним з найсучасніших є технологія ADO.NET, підтримку якій компанія Borland реалізувала у своїх останніх засобах розробки для. NET, що включають C # Builder і компілятор Delphi для. NET.


Ця стаття надає огляд механізму доступу до даних за технологією ADO.NET так, як це визначено в середовищі. NET Framework 1.1. У наступній статті пропонованої серії ця тема буде продовжена з детальним обговоренням класів зберігання даних, включаючи клас DataSet.


Читаючи статті з пропонованої серії, слід мати на увазі наступне. По-перше, представлені статті та супутній код засновані на компіляторі для Delphi 7, чия оновлена ​​версія 3 доступна з весни 2003 року. На момент написання даної статті компанія Borland ще не володіла інтегрованим середовищем розробки для Delphi в середовищі. NET. Отже, розглянуті в якості прикладів проекти не були створені за допомогою засобів візуальної розробки. Замість цього всі візуальні компоненти (у разі, коли проект до них звертається) були створені і сконфігуровані, використовуючи тільки програмний код.


По друге, розробники компанії Borland можливо ще не закінчили реалізацію ADO.NET за допомогою спеціальних методів, описаних у пропонованій серії. Найімовірніше компанія Borland надасть щось на зразок інтерфейсу ClientDataSet для. NET, який значно спростить використання даних у керованих пристроях, точно так само, як клас ADODataSet з бібліотеки VCL спрощує використання ADO-об’єктів. Однак, якщо Borland розробить. NET ClientDataSet при використанні підходу, подібного своїм класам ADODataSet, тоді, швидше за все, з’явиться можливість використання як інтерфейсу ClientDataSet, так і більш низькорівневих методів, описаних в даній серії.


ADO.NET: Зберігання даних та доступ до них


ADO.NET – це назва ланки даних, що надається бібліотекою Foundation Class Library (FCL) в середовищі. NET. Концептуально технологія ADO.NET може бути розділена на дві різні складові: механізм доступу до даних і система зберігання даних.


Всі основні класи, інтерфейси і типи, використовувані в ADO.NET, визначені в просторі імен другого рівня System.Data. Класи, що відповідають системі зберігання даних, є самостійними класами, які можна використовувати в будь-якому додатку ADO.NET. Такі класи включають в себе DataColumn, DataRelation, DataRow, DataSet і DataTable, з яких найбільш важливим є клас DataSet.


На відміну від механізму зберігання, який визначений в термінах класів, механізм доступу до даних визначено мовою інтерфейсів. Ці інтерфейси реалізовані спеціальними класами, пов’язаними з конкретним механізмом доступу до даних. У середовищі. Net Framework версії 1.1 існує п’ять механізмів доступу до даних. Вони пов’язані з наступними просторами імен третього рівня: System.Data.SqlClient, System.Data.OleDb, System.Data.Odbc, System.Data.SqlServerCE і System.Data.OracleClient.


Наприклад, розглянемо клас SqlDataAdapter з простору імен System.Data.SqlClient. Цей клас, який іноді відносять до розряду DataAdapter, використовується для завантаження даних в клас DataSet. SqlDataAdapter, подібно до всіх інших класів з розряду DataAdapter, реалізує інтерфейс IDbDataAdapter. Інші реалізують IDbDataAdapter класи включають в себе OleDbDataAdapter, OdbcDataAdapter і OracleDataAdapter.


Слід зазначити, що багато постачальників баз даних розробили або розробляють свої власні специфічні механізми доступу до даних. Можливо, що один з механізмів доступу до даних середовища. Net Framework 1.1 забезпечить доступ до таких баз даних, але в результаті класи доступу до даних, надані самими постачальниками, швидше за все, будуть більш оптимізовані під конкретний сервер.


Інтерфейси доступу до даних в ADO.NET


Нижче пропонується діаграма, що описує рівень доступу до даних в ADO.NET і його взаємини з класом DataSet. Як можна бачити, класи реалізації інтерфейсів доступу до даних призначені для узгодженого взаємодії при доступі до основної бази даних. При цьому, клас, який реалізує IdbDataAdapter, використовується для доставки необхідних даних класу DataSet.


Такий реалізований в термінах інтерфейсів доступ до даних в середовищі. NET має велике значення, оскільки він забезпечує доступ до даних на рівні API, залишаючи реалізують класів специфічні деталі. У середовищі. NET Framework 1.1 кожен з цих інтерфейсів реалізується деяким класом, який належить одному з просторів імен, які відповідають конкретній механізму доступу до даних. Наприклад, для доступу до даних за допомогою сервера SQL можна використовувати класи SqlConnection, SqlCommand, SqlDataReader і SqlDataAdapters. З іншого боку, при доступі до даних через провайдера OleDb слід, відповідно, використовувати класи OleDbConnection, OleDbCommand, OleDbDataReader і OleDbDataAdapter.


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


IDbConnection


Класи, що реалізують інтерфейс IDbConnection, використовуються для встановлення з’єднання з джерелом даних. У більшості випадків джерелом буде служити база даних, відповідна конкретного сервера баз даних. Проте, завдяки підтримці з’єднань OleDB і ODBC, можна приєднуватися до будь-якого джерела даних, для якого є провайдер OleDb і ODBC-драйвера. Наприклад, до таких джерел відносяться бази даних Paradox, dBase і MS Access.


Інші класи, які реалізують інші перераховані на діаграмі інтерфейси, засновані на з’єднанні, що підтримується класом реалізації інтерфейсу IDbConnection. Проте, при використанні класу DataSet, який не заносить свої дані в основну БД (наприклад, коли DataSet отримує дані з XML-файла), немає необхідності використовувати клас, який реалізує інтерфейс IDbConnection.


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


Інтерфейс IDbConnection визначає властивості, які подібні до тих, що надаються компонентом SQLConnection ADO-методів dbExpress і ADOConnection або компонентом TSession процесора баз даних BDE.


IDbCommand


Реалізують інтерфейс IDbCommand класи використовуються для обробки запитів до основної бази даних. Такі класи повинні бути пов’язані з відповідними класами реалізації інтерфейсу IDbConnection.


У рамках інтерфейсу IDbCommand запити можуть містити параметри. Якщо це так, то слід зв’язати дані з індивідуальними параметрами, використовуючи клас, який реалізує інтерфейс IDbDataParameter. Всі параметри, пов’язані з класом реалізації інтерфейсу IDbCommand, перебувають у властивості Parameters відповідного класу реалізації. Ця властивість є прикладом класу, що реалізовує інтерфейс IDataParameterCollection.


Класи реалізації інтерфейсу IDbCommand схожі з компонентом ADOCommand бібліотеки VCL.


IdataReader


Класи, що реалізують інтерфейс IDataReader, забезпечують швидкий, односпрямований курсор до кінцевого набору даних, що повертається на вимогу IDbCommand. Такі класи використовуються для виконання операцій, не потребують кешування даних. Наприклад, до таких операцій належить ситуація, коли не потрібно завантажувати дані в клас DataTable або при итеративном зверненні до кінцевого набору даних і виконанні умовних обчислень над кожною зустрічається записом. Класи реалізації інтерфейсу IDataReader схожі з класом SQLDataSet методу dbExpress.


IDbDataAdapter


Класи, що реалізують інтерфейс IDbDataAdapter, застосовуються для читання даних і подальшої їх завантаження в клас DataSet. Для доступу до даних такі класи повинні вказувати на відповідний клас реалізації IDbConnection. Крім завантаження даних в DataSet інтерфейс IDbDataAdapters визначає запити, що використовуються для роботи з основною базою даних по вилученню та занесенню інформації. Реалізують інтерфейс IDbDataAdapter об’єкти мають багато схожих рис з класом DataSetProvider в Delphi.


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


SQL-оператори, які застосовуються в інтерфейсі IDbDataAdapter, пов’язані з властивостями SelelectCommand, InsertCommand, UpdateCommand і DeleteCommand засоби реалізації IDbDataAdapter. Ці команди є прикладами класів, що реалізують інтерфейс IDbCommand. Всі класи реалізації інтерфейсу IDbDataAdapter можуть приймати SQL-оператор SELECT як параметр, принаймні, одного зі своїх перевантажених конструкторів. Якщо один з цих конструкторів використовується для створення екземпляра IDbDataAdapter, то немає необхідності явно привласнювати клас реалізації IDbCommand властивості SelectCommand.


Замість явного привласнення SQL-операторів властивостями InsertCommand, UpdateCommand і DeleteCommand можна використовувати відповідні класи компоновки команд для генерації відповідних SQL-команд. Тому прикладами служать класи SQLCommandBuilder і OleDbCommandBuilder.

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


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

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

Ваш отзыв

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

*

*