Объекты 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 имеется множество встроенных мастеров и дизайнеров, которые помогут быстро и эффективно создать архитектуру доступа к данным во время разработки и оснастить приложение надежным механизмом доступа к данным, затратив минимум усилий на написание кода.