Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка приложений баз данных (Visual Studio 2008).docx
Скачиваний:
143
Добавлен:
26.03.2016
Размер:
1.01 Mб
Скачать

Обновление источников данных с помощью объектов DataAdapter (ado.Net)

Метод UpdateобъектаDataAdapterвызывается для решения задачи по передаче изменений изDataSetобратно в источник данных. Метод Update, как и метод Fill, принимает в качестве аргументов экземпляр DataSet, а также (необязательно) объектDataTableилиимя DataTable. Экземпляр DataSet представляет собой объект DataSet, который содержит выполненные изменения, а DataTable указывает на таблицу, из которой должны быть получены эти изменения. Если ни один объект DataTable не задан, используется первый объект DataTable в DataSet.

При вызове метода Updateв DataAdapter анализируются внесенные изменения и выполняется соответствующая команда (INSERT, UPDATE или DELETE). Если в DataAdapter обнаруживается изменение вDataRow, то в этом объекте используется командаInsertCommand,UpdateCommandилиDeleteCommandдля обработки этого изменения. Это позволяет максимально повысить производительность приложения ADO.NET путем задания синтаксиса команды во время разработки, а также, по возможности, за счет применения хранимых процедур. Необходимо явно задавать команды перед вызовом Update. Если вызывается Update, и не существует подходящая команда для конкретного обновления (например, отсутствует DeleteCommand для удаленных строк), то активизируется исключение.

Примечание. При использовании хранимых процедур SQL Server для изменения или удаления данных с помощью DataAdapter убедитесь, что в определении хранимой процедуры не указана инструкция SET NOCOUNT ON. В таком случае возвращается число затронутых строк, равное нулю, что DataAdapter интерпретирует как конфликт параллелизма. Это событие вызовет исключение DBConcurrencyException.

Примечание. Важно учитывать различие между обозначением строки как удаленной в DataTable и удалением этой строки. Если вызывается метод Remove или RemoveAt, строка немедленно удаляется. Любые соответствующие строки в серверном источнике данных остаются не затронутыми, если после этого будет передано значение DataTable или DataSet в DataAdapter и вызван метод Update. Если же используется метод Delete, то строка остается в DataTable и отмечается как предназначенная для удаления. Если после этого будет передано значение DataTable или DataSet в DataAdapter и вызван метод Update, то соответствующая строка в серверном источнике данных становится удаленной.

Столбцы AutoIncrement

Если в таблицах из применяемого источника данных имеются столбцы с автоматическим увеличением значений, то можно обеспечить заполнение столбцов в применяемом DataSet путем возврата автоматически увеличивающегося значения как выходного параметра хранимой процедуры и сопоставления его со столбцом таблицы; возврата автоматически увеличивающегося значения в первой строке результирующего набора, возвращенного хранимой процедурой или инструкцией SQL; а также использование события RowUpdated объекта DataAdapter для выполнения дополнительной инструкции SELECT. Дополнительные сведения и пример см. в разделе Извлечение значений идентификаторов или автонумерации (ADO.NET).

Методы и свойства TableAdapter

Класс TableAdapter не является частью .NET Framework, и его невозможно найти в документации или Обозревателе объектов. Он создается во время разработки при использовании одного из мастеров, упомянутых выше. Имя, присвоенное TableAdapter при его создании, основано на имени таблицы, с которой происходит работа. Например, при создании TableAdapter на основе таблицы в базе данных с именем Orders TableAdapter будет иметь имя OrdersTableAdapter. Имя класса TableAdapter можно изменить с помощью свойства Name в Конструкторе наборов данных.

Ниже перечислены часто используемые методы и свойства TableAdapters:

Элемент

Описание

TableAdapter.Fill

Заполняет таблицу TableAdapter, связанную с адаптером, результатами выполнения команды SELECT, заданной в адаптере.

TableAdapter.Update

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

TableAdapter.GetData

Возвращает новую DataTable, заполненную данными.

TableAdapter.Insert

Создает новую строку в таблице данных.

TableAdapter.ClearBeforeFill

Определяет, очищается ли таблица данных перед вызовом одного из методов Fill.