2007 г.

Основы ADO .NET
Лекция из курса «Введение в программирование на C# 2.0»

Марченко Антон Леонардович
Интернет-Университет Информационных Технологий, INTUIT.ru

Оглавление

Реляционные базы данных. Основные понятия
Работа с базами данных
Доступ к отсоединенным данным
ADO .NET. Доступ к данным
ADO .NET. Объектная модель
DataTable
События класса DataTable
DataColumns
DataRows
Изменение данных в DataTable и состояние строки таблицы
Пример. Создание таблицы, работа с записями
Relations
Constraints
DataView
Примеры использования DataView
DataSet
Структура класса DataSet
DataSet в свободном полете
Применение класса DataSet
Подсоединенные объекты модели ADO .NET. Провайдеры
Connection
Свойства, методы и события класса OleDbConnection
Подключение к БД на этапе разработки приложения
Продолжение разработки. Простые шаги
... и еще более простые шаги
Имитация отсоединенности. Пул соединений
Применение объекта соединения для исследования схемы базы
Отступление о запросах
Command
Сведения о хранимых процедурах
Способы создания команд
Parameter
Настройка команд
Свойства параметров
Установка значений параметров
Получение возвращаемого значения
DataReader
Использование объекта DataReader
Извлечение типизированных данных
DataAdapter
Транзакция

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

ADO .NET широко используется совместно с технологией web-программирования с использованием объектов ASP .NET для доступа к расположенным на сервере базам данных со стороны клиента.

Особенность изложения материала этой главы заключается в следующем.

Решение даже самой простой задачи, связанной с данными, предполагает использование множества разнообразных объектов – представителей классов ADO .NET, которые находятся между собой в достаточно сложных взаимоотношениях. Из-за этих отношений строго последовательное описание элементов ADO .NET представляется весьма проблематичным. С какого бы элемента ни начиналось описание, всегда предполагается предварительное представление о множестве других элементов.

По этой причине часто упоминание и даже примеры использования некоторых классов предшествуют их подробному описанию.

Реляционные базы данных. Основные понятия

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

Детали реализации конкретной базы данных в рамках данной СУБД не обсуждаются. ADO .NET для того и используется, чтобы максимально скрыть детали реализации конкретной базы и предоставить программисту набор стандартных классов, интерфейсов, программных средств, которые превращают процесс создания приложения в стандартизированный технологический процесс. Таким образом, с точки зрения .NET:

столбец (поле, атрибут) —

  • характеризуется определенным типом (данных),
  • множество значений столбца являются значениями одного типа;

строка (запись, кортеж) —

  • характеризуется кортежем атрибутов,
  • состоит из упорядоченного множества значений (кортежа) атрибутов;

таблица —

  • набор данных, представляющих объекты определенного типа,
  • состоит из множества элементов столбцов-строк,
  • каждая строка таблицы УНИКАЛЬНА;

первичный ключ таблицы —

  • непустое множество столбцов таблицы (возможно, состоящее из одного столбца), соответствующие значения (комбинации значений) которых в строках таблицы обеспечивают уникальность каждой строки в данной таблице;

дополнительный ключ таблицы —

  • а бог его знает, зачем еще одна гарантия уникальности строки в таблице;

внешний ключ таблицы —

  • непустое множество столбцов таблицы (возможно, состоящее из одного столбца), соответствующие значения (комбинации значений) которых в строках таблицы соответствуют первичному или дополнительному ключу другой таблицы,
  • обеспечивает логическую связь между таблицами.

Работа с базами данных

Работа с БД на уровне приложения .NET – это работа:

  • с множествами объявлений классов, которые содержат объявления унаследованных методов и свойств, предназначенных для решения задачи извлечения информации из базы данных;
  • с множеством объектов-представителей классов, которые обеспечивают работу с базами данных;
  • с множеством значений и свойств конкретных объектов, отражающих специфику структуры конкретной базы данных.

Функциональные особенности этой сложной системы взаимодействующих классов обеспечивают ЕДИНООБРАЗНУЮ работу с базами данных независимо от системы управления базой и ее реализации.

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

Для программиста – разработчика приложения принципиальной становится информация о логической организации (структуре таблиц, отношениях и ограничениях) данной конкретной базы данных — то есть о том, как эту базу видит приложение.

Деятельность программиста – разработчика приложений для работы с базами данных в основе своей ничем не отличается от того, что было раньше. Те же объявления классов и интерфейсов.

А потому желательно:

  • понимать принципы организации и взаимодействия классов, которые обеспечивают работу с базой данных;
  • представлять структуру, назначение и принципы работы соответствующих объектов;
  • знать, для чего и как применять различные детали при организации взаимодействия с базами данных;
  • уметь создавать компоненты ADO .NET заданной конфигурации с использованием вспомогательных средств (волшебников), предоставляемых в рамках Visual Studio .NET.

Доступ к отсоединенным данным

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

Недостатки такого подхода стали выявляться после появления приложений, ориентированных на Интернет.

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

Факт плохого масштабирования приложений с постоянным соединением известен давно. Соединение с парой клиентов обслуживается приложением хорошо, 10 клиентов обслуживаются хуже, 100 – много хуже...

В ADO .NET используется другая модель доступа – доступ к отсоединенным данным. При этом соединение устанавливается лишь на то время, которое необходимо для проведения определенной операции над базой данных.

Модель доступа – модель компромиссная. В ряде случаев она проигрывает по производительности традиционной модели, и для этих случаев рекомендуется вместо ADO .NET использовать ADO.

Оглавление Вперёд

Связь с редакцией