- 29 сентября 2026
- 6 минут
- 3
Статью подготовили специалисты образовательного сервиса Zaochnik.
Технология ADO.NET: назначение, объекты и провайдеры доступа к данным
Технология ADO.NET: объекты и провайдеры доступа к данным
Почти любая информационная система в своей работе опирается на базу данных, но само по себе хранилище — это лишь часть картины. Приложению нужно как-то дотянуться до данных, отправить запрос и получить результат. Роль такого связующего звена между базой и программным кодом как раз и берёт на себя технология ADO.NET.
Для чего нужна технология ADO.NET
В большинстве систем фундаментом служит система управления базами данных (СУБД) вместе с базами, которыми она распоряжается. Но помимо этого фундамента есть ещё бизнес-логика и пользовательские интерфейсы, воплощённые в приложениях на разных языках программирования. Чтобы соединить СУБД с приложением, написанным, например, на C#, требуется промежуточный слой — посредник. Именно эту функцию и выполняет ADO.NET, а в её основе лежит платформа .NET Framework.
ADO.NET — это библиотека классов, с помощью которых приложение устанавливает подключение к базе данных и выполняет запросы.
Здесь важно понимать один нюанс. Хотя все реляционные СУБД строятся на единой модели данных и говорят на диалектах языка SQL, различия между ними всё же есть. Так, диалект MS SQL Server называется T-SQL, тогда как Oracle и MySQL используют PL-SQL. От диалекта к диалекту могут меняться типы данных и отдельные функции.
ADO.NET устроена так, чтобы прятать эти расхождения от разработчика и давать единый, унифицированный интерфейс доступа к базам. Благодаря этому даже полная замена СУБД никак не отражается на работе приложения — код остаётся прежним.
Основные объекты ADO.NET
Всю основную работу в ADO.NET выполняют несколько ключевых объектов:
- Connection — открывает подключение к источнику данных;
- Command — выполняет операции над данными, хранящимися в базе;
- DataReader — считывает данные, полученные в результате запроса;
- DataSet — сохраняет выборку из базы в особом наборе и позволяет работать с ней дальше независимо от самой базы;
- DataTable — хранит данные в виде таблицы, также независимо от базы;
- DataAdapter — выступает посредником между источником данных и объектом DataSet.
Вместе эти объекты образуют цепочку: одни отвечают за живую связь с базой, другие — за автономную работу с уже извлечёнными данными.
Провайдеры баз данных
Чтобы одни и те же объекты могли работать с разными СУБД, нужен специальный компонент-переходник.
Провайдер базы данных (драйвер) — это программный интерфейс, который обеспечивает соединение с базой. Провайдеры пишутся под конкретную СУБД.
По умолчанию в ADO.NET встроен целый набор готовых провайдеров:
- провайдер MS SQL Server;
- провайдер OLE DB — открывает доступ к старым версиям MS SQL Server, а также к Access, DB2, MySQL и Oracle;
- провайдер ODBC — универсальный драйвер;
- провайдер для Oracle;
- провайдер для EntityClient;
- провайдер для SQL Server Compact 4.0.
Такой запас драйверов покрывает большинство практических сценариев и избавляет разработчика от поиска сторонних решений.
Подключённый и отключённый режимы работы
Работать с данными через ADO.NET можно двумя способами: удерживая постоянную связь с источником либо обходясь без неё.
В режиме с подключением связь поддерживается всё время сеанса. Чтение идёт прямо из базы, а запись — сразу в базу. Такой подход хорош, когда нужны свежие данные в реальном времени.
Отключённый режим устроен иначе. Данные однократно выгружаются из базы в специальные наборы, после чего приложение манипулирует уже этой локальной копией, не удерживая соединение. Здесь есть закономерность: объекты, которым требуется живое подключение, зависят от типа провайдера, а объекты для автономной работы от провайдера не зависят вовсе.
Система префиксов для объектов провайдера
Раз каждый провайдер предлагает свои версии основных объектов, их нужно как-то различать. В ADO.NET для этого принята система префиксов: имя объекта дополняется приставкой, указывающей на конкретный провайдер.
Объект Connection в версии для MS SQL Server называется SqlConnection, в версии для OLE DB — OleDbConnection, а в версии для ODBC — OdbcConnection. Тот же принцип действует и для остальных объектов, которым нужно подключение.
А вот объекты, не требующие постоянной связи с базой, обходятся без префиксов и носят одно универсальное имя — DataSet, DataTable и другие. Логика проста: раз такие объекты не привязаны к провайдеру, то и различать их приставками незачем.
Выбор режима работы стоит соотносить с задачей. Подключённый режим и объекты вроде DataReader выигрывают там, где важны скорость чтения и актуальность данных при коротких операциях. Отключённый режим с DataSet и DataTable удобнее, когда нужно обработать выборку автономно, снизить нагрузку на СУБД и не держать соединение открытым. А унифицированный интерфейс и система префиксов вместе позволяют менять СУБД, почти не переписывая прикладной код.