Объекты ADO.NET

UPDATE, DELETE) или изменение там же структур данных (например, SQL-операторы CREATE TABLE, ALTER TABLE и т. д.). Выгоднее выполнять такие операторы не поодиночке, а совместно отдельным пакетом, с единовременной установкой соединения и его последующим разрывом по выполнении всего пакета. Соединение с источником данных нельзя разрывать только до окончания выполнения транзакции – группы физически обособленных, но логически единых действий. Если хотя бы одно из таких действий заканчивается ошибкой, результаты всех прочих рассматриваемых в контексте транзакций, отменяются. Как правило, транзакции используются для внесения связанных по смыслу изменений в группу различных таблиц, размещенных в одном или нескольких источниках данных. Процесс установки соединения достаточно ресурсоемок. Чтобы минимизировать затраты ресурсов, закрытое в приложении соединение фактически не высвобождается, а помещается в пул – динамически разделяемую область памяти. Когда соединение с такими же параметрами нужно этому приложению или другому, работающему параллельно, объект соединения запрашивается из пула. Будучи снова закрыто в приложении, соединение опять поступает в пул. Так обеспечивается взаимодействие множества параллельно работающих пользователей и источника данных. Из вышесказанного можно сделать следующие выводы:

• В приложении нужно стремиться свести к минимуму время соединения с источником данных.

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

• Необходимо – где это возможно – использовать в приложениях соединения с одинаковыми параметрами. Такие соединения будут выбираться из пула вместо того

чтобы создаваться всякий раз заново.

Объект Connection представляет соединение с БД.Все данные, необходимые для открытия канала связи с БД, хранятся в свойстве ConnectionSiring объекта Connection, этот объект также поддерживает ряд методов, позволяющих обрабатывать данные с применением транзакций.

Объект Command позволяет исполнять команды над БД, используя для обмена данными

установленное соединение. При помощи объектов Command можно исполнять хранимые процедуры, команды SQL, а также операторы, возвращающие целые таблицы. Объект Command поддерживает три метода:

ExecuteNonQuery. Исполняет команды, не возвращающие данные, например INSERT, UPDATE и DELETE;

Execute Scalar. Исполняет запросы к БД, возвращающие единственное значение;

Execute Reader. Возвращает результирующий набор через объект DataReader.

Объект DataReader предоставляет поток с набором записей БД, доступный только для однонаправленного чтения. Б отличие от других компонентов провайдера данных, создавать экземпляры DataReader напрямую не разрешается, его можно получить при помощи методов ExecuteReader объекта Command: метод SqlCommand.ЕхесиteReader возвращает объект SglData Reader, а метод OleDbCommand. ExecuteReader — объект OleDbDataReader. Если записывать содержимое объекта DataReader на диск не требуется, строки с данными можно передавать приложению напрямую Поскольку в любой момент времени в памяти находится только одна строка, использование объекта DataReader почти не снижает производительность системы, но требует монопольного доступа к открытому объекту Connection в течение времени жизни объекта DataReader.

DataAdapter — это основной класс ADO.NET, обеспечивающий доступ к отсоединенным данным. В сущности, он выполняет функции посредника во взаимодействии между БД и объектом DataSet. При вызове метода Fill объект DataAdapter заполняет Data Table или DataSet данными, полученными из БД. После обработки данных, загруженных в память, можно записать модифицированные записи в БД, вызвав метод Update объекта DataAdapter. У DataAdapter имеются четыре свойства, представляюших команды БД:

Select Command. Содержит текст или объект команды, осуществляющей выборку данных из БД; при вызове метода Fill эта команда исполняется и заполняет объект DataTable или объект DataSet,

• Insert Command. Содержит текст или объект команды, осуществляющий вставку строк в таблицу;

DeleteCommand. Содержит текст или объект команды, осуществляющий удаление строки из таблицы;

UpdateCommand. Содержит текст или объект команды, осуществляющий обновление значений в БД.

При вызове метода Update все измененные данные копируются из объекта DataSet в БД с исполнением соответствующей команды InsertCommand, DeleteCommand или UpdateCommand.

В Visual Studio .NET имеется множество встроенных мастеров и дизайнеров, которые помогут быстро и эффективно создать архитектуру доступа к данным во время разработки и оснастить приложение надежным механизмом доступа к данным, затратив минимум усилий на написание кода.