Перейти к содержимому

Ado net что это

  • автор:

Введение в ADO.NET

Сегодня большое значение имеет работа с данными. Для хранения данных используются различные системы управления базами данных: MS SQL Server, Oracle, MySQL и так далее. И большинство крупных приложений так или иначе используют для хранения данных эти системы управления базами данных. Однако чтобы осуществлять связь между базой данных и приложением на C# необходим посредник. И именно таким посредником является технология ADO.NET.

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

Причем важно отметить, что систем управления баз данных может быть множество. В своей сущности они могут различаться. MS SQL Server, например, для создания запросов использует язык T-SQL, а MySQL и Oracle применяют язык PL-SQL. Разные системы баз данных могут иметь разные типы данных. Также могут различаться какие-то другие моменты. Однако функционал ADO.NET построен таким образом, чтобы предоставить разработчикам унифицированный интерфейс для работы с самыми различными СУБД.

Основу интерфейса взаимодействия с базами данных в ADO.NET представляет ограниченный круг объектов: Connection, Command, DataReader, DataSet и DataAdapter. С помощью объекта Connection происходит установка подключения к источнику данных. Объект Command позволяет выполнять операции с данными из БД. Объект DataReader считывает полученные в результате запроса данные. Объект DataSet предназначен для хранения данных из БД и позволяет работать с ними независимо от БД. И объект DataAdapter является посредником между DataSet и источником данных. Главным образом, через эти объекты и будет идти работа с базой данных.

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

По умолчанию в ADO.NET имеются следующие встроенные провайдеры:

  • Провайдер для MS SQL Server
  • Провайдер для OLE DB (Предоставляет доступ к некоторым старым версиям MS SQL Server, а также к БД Access, DB2, MySQL и Oracle)
  • Провайдер для ODBC (Провайдер для тех источников данных, для которых нет своих провайдеров)
  • Провайдер для Oracle
  • Провайдер EntityClient. Провайдер данных для технологии ORM Entity Framework
  • Провайдер для сервера SQL Server Compact 4.0

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

Основные пространства имен, которые используются в ADO.NET:

  • System.Data : определяет классы, интерфейсы, делегаты, которые реализуют архитектуру ADO.NET
  • System.Data.Common : содержит классы, общие для всех провайдеров ADO.NET
  • System.Data.Design : определяет классы, которые используются для создания своих собственных наборов данных
  • System.Data.Odbc : определяет функциональность провайдера данных для ODBC
  • System.Data.OleDb : определяет функциональность провайдера данных для OLE DB
  • System.Data.Sql : хранит классы, которые поддерживают специфичную для SQL Server функциональность
  • System.Data.OracleClient : определяет функциональность провайдера для баз данных Oracle
  • System.Data.SqlClient : определяет функциональность провайдера для баз данных MS SQL Server
  • System.Data.SqlServerCe : определяет функциональность провайдера для SQL Server Compact 4.0
  • System.Data.SqlTypes : содержит классы для типов данных MS SQL Servera
  • Microsoft.SqlServer.Server : хранит компоненты для взаимодействия SQL Server и среды CLR

Схематично архитектуру ADO.NET можно представить следующим образом:

Архитектура ADO.NET

Функционально классы ADO.NET можно разбить на два уровня: подключенный и отключенный. Каждый провайдер данных .NET реализует свои версии объектов Connection, Command, DataReader, DataAdapter и ряда других, который составляют подключенный уровень. То есть с помощью них устанавливается подключение к БД и выполняется с ней взаимодействие. Как правило, реализации этих объектов для каждого конкретного провайдера в своем названии имеют префикс, который указывает на провайдер:

Провайдеры ADO.NET

Другие классы, такие как DataSet, DataTable, DataRow, DataColumn и ряд других составляют отключенный уровень, так как после извлечения данных в DataSet мы можем работать с этими данными независимо от того, установлено ли подключение или нет. То есть после получения данных из БД приложение может быть отключено от источника данных.

ADO.NET

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

В этом разделе

Новые возможности в ADO.NET
Представляет новые возможности ADO.NET.

Общие сведения об ADO.NET
Содержит введение в структуру и компоненты ADO.NET.

Entity Framework Описание процесса создания приложений с помощью Entity Framework.

Защита приложений ADO.NET
Описывает приемы безопасного программирования при использовании ADO.NET.

Сопоставления типов данных в ADO.NET
Описывается сопоставление между типами данных .NET Framework и поставщиками данных .NET Framework.

Наборы данных, таблицы данных и объекты DataView
Описывает процесс создания и использования объектов DataSets , типизированных объектов DataSets , а также объектов DataTables и DataViews .

LINQ to DataSet
Содержит сведения о технологии LINQ to DataSet, в том числе примеры программирования.

Извлечение и изменение данных в ADO.NET
Описывает подключение к источнику данных и получение и изменение данных с помощью Commands , DataReaders и DataAdapters .

SQL Server и ADO.NET
Описывает процесс работы со специальными возможностями и функциями SQL Server.

Oracle и ADO.NET
Описывает функции и варианты поведения, характерные для поставщика данных .NET Framework для Oracle.

Связанные разделы

LINQ — C#
Содержит ссылки на разделы и примеры LINQ с использованием C#.

LINQ — Visual Basic
Содержит ссылки на разделы и примеры LINQ с помощью Visual Basic.

платформа .NET Framework руководством по разработке
Приводит ссылки на сведения о стандартных задачах разработки с применением платформы .NET Framework.

Примеры и руководства
Содержит список примеров и учебников по .NET.

См. также раздел

  • Доступ к данным в Visual Studio
  • Общие сведения об ADO.NET

Общие сведения о ADO.NET

ADO.NET предоставляет согласованный доступ к таким источникам данных, как SQL Server и XML, а также к источникам данных, предоставляемым при помощи OLE DB и ODBC. Пользовательские приложения, использующие общие данные, могут использовать ADO.NET для соединения с этими источниками данных и для получения, обработки и обновления имеющихся в них данных.

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

Классы ADO.NET имеются в System.Data.dll и интегрируются с классами XML, имеющимися в System.Xml.dll. Пример кода, который подключается к базе данных, извлекает из нее данные, а затем отображает эти данные в окне консоли, см. в разделе примеры кода ADO.NET.

Для разработчиков, которые пишут управляемый код, ADO.NET предоставляет функциональный набор, сходный с функциональным набором, который предоставляют объекты данных ActiveX (ADO) разработчикам моделей объектов собственных компонентов (COM). Для доступа к данным в приложении .NET мы рекомендуем использовать ADO.NET, а не ADO.

ADO.NET предоставляет самый прямой способ доступа к данным в .NET Framework. Более высокий уровень абстракции, позволяющей приложениям работать с концептуальной моделью, а не с базовой моделью хранения, см. в ADO.NET Entity Framework.

Заявление о конфиденциальности. Сборки System.Data.dll, System.Data.Design.dll, System.Data.OracleClient.dll, System.Data.SqlXml.dll, System.Data.Linq.dll, System.Data.SqlServerCe.dll и System.Data.DataSetExtensions.dll не различают личные и неличные данные пользователя. Эти сборки не собирают, не хранят и не переносят пользовательские личные данные. Но приложения сторонних производителей могут собирать, хранить и переносить пользовательские личные данные с использованием этих сборок.

В этом разделе

Архитектура ADO.NET
Предоставляет общие сведения об архитектуре и компонентах ADO.NET.

Возможности технологии и рекомендации по ADO.NET
Описываются продукты и технологии, входящие в состав платформы Entity Data Platform.

LINQ и ADO.NET
Описывается реализация технологии LINQ (Language-Integrated Query) в ADO.NET и приводятся ссылки на соответствующие разделы.

Поставщики данных .NET Framework
Предоставляет общие сведения о конструкции поставщика данных .NET Framework и поставщиков данных .NET Framework, включенных при помощи ADO.NET.

Наборы данных ADO.NET
Предоставляет общие сведения о конструкции и компонентах DataSet .

Одновременное выполнение в ADO.NET
Рассматривает различия версий ADO.NET и их влияние на параллельное выполнение и совместимость приложений.

Примеры кода ADO.NET
Предоставляет образцы кода, который получает данные при помощи поставщиков данных ADO.NET.

Связанные разделы

Новые возможности в ADO.NET
Представляет новые возможности ADO.NET.

Защита приложений ADO.NET
Описывает приемы безопасного программирования при использовании ADO.NET.

Сопоставления типов данных в ADO.NET
Описывается сопоставление между типами данных .NET Framework и поставщиками данных .NET Framework.

Извлечение и изменение данных в ADO.NET
Описывает, как выполнять соединение с источником данных, получать и изменять данные. К этому относятся DataReaders и DataAdapters .

См. также раздел

  • ADO.NET
  • Доступ к данным в Visual Studio

Обзор ADO.NET

— нечто большее, чем надстройка над каким-нибудь существующим API-интерфейсом. Сходство с ADO минимально; классы и методы доступа к данным довольно существенно отличаются.

— это библиотека компонентов СОМ, получившая в последние несколько лет множество воплощений. ADO состоит, прежде всего, из объектов Connection, Command, Recordset и Field. С помощью ADO открывается соединение с базой данных, после чего некоторые данные извлекаются и помещаются в набор записей, состоящих из полей; эти данные затем претерпевают манипуляции и обновления на сервере, после чего соединение закрывается. Кроме того, ADO предлагает так называемый отключенный набор записей (disconnected record set), который используется, когда соединение с базой нежелательно удерживать открытым в течение длительного времени.

Существует несколько проблем, которые ADO не решает удовлетворительным образом. Наиболее заметная из них — громоздкость (в плане физического размера) отключенного набора записей. Потребность в этом средстве возрастает по мере развития веб-ориентированных вычислений, поэтому в данном случае понадобился свежий подход. Переход от ADO к ADO.NET не должен быть слишком трудным, поскольку между этими технологиями все же имеется некоторое сходство.

Более того, если вы используете SQL Server, существует замечательный набор управляемых классов, которые настроены на обеспечение максимальной производительности базы данных. Одного этого достаточно для перехода на ADO.NET.

ADO.NET поставляется с тремя пространствами имен клиента базы данных: одно для SQL Server, другое для источников данных Open Database Connectivity (ODBC) и третье для любой базы данных, доступной через OLE DB. Если выбрана база данных, отличная от SQL Server, отдавайте предпочтение OLE DB, если только не окажется, что нет другого выбора кроме ODBC. Если в качестве базы данных используется Oracle, можете посетить сайт Oracle .NET Developer и получить там их поставщика .NET — ODP.NET на странице www.oracle.com/technology/tech/windows/odpnet/index.html.

С точки зрения программиста, тело ADO.NET составляет базовая сборка с именем System.Data.dll. В этом двоичном файле находится значительное количество пространств имен, многие из которых представляют типы конкретного поставщика данных ADO.NET:

Сборка System.Data.dll

Большинство шаблонов проектов Visual Studio 2010 автоматически ссылаются на эту ключевую библиотеку доступа к данным. Однако для импортирования нужных пространств имен необходимо изменить кодовые файлы, например:

using System; using System.Data; using System.Data.SqlClient; . 

Учтите также, что кроме System.Data.dll, существуют и другие ориентированные на ADO.NET сборки (например, System.Data.OracleClient.dll и System.Data.Entity.dll), которые необходимо вручную указывать в текущем проекте с помощью диалогового окна Add Reference (Добавление ссылки).

Три стороны ADO.NET

Библиотеки ADO.NET можно применять тремя концептуально различными способами: в подключенном режиме, в автономном режиме и с помощью технологии Entity Framework. При использовании подключенного уровня (connected layer), кодовая база явно подключается к соответствующему хранилищу данных и отключается от него. При таком способе использования ADO.NET обычно происходит взаимодействие с хранилищем данных с помощью объектов подключения, объектов команд и объектов чтения данных.

Автономный уровень (disconnected layer), позволяет работать с набором объектов DataTable (содержащихся в DataSet), который представляет на стороне клиента копию внешних данных. При получении DataSet с помощью соответствующего объекта адаптера данных подключение открывается и закрывается автоматически. Понятно, что этот подход помогает быстро освобождать подключения для других вызовов и повышает масштабируемость систем.

Получив объект DataSet, вызывающий код может просматривать и обрабатывать данные без затрат на сетевой трафик. А если нужно занести изменения в хранилище данных, то адаптер данных (вместе с набором операторов SQL) задействуется для обновления данных — при этом подключение открывается заново для проведения обновлений в базе, а затем сразу же закрывается.

После выпуска .NET 3.5 SP1 в ADO.NET появилась поддержка нового API, которая называется Entity Framework (сокращенно EF). Технология EF показывает, что многие низкоуровневые детали работы с базами данных (например, сложные SQL-запросы) скрыты от программиста и отрабатываются за него при генерации соответствующего LINQ-запроса (например, LINQ с Entities).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *