IDataAdapter.Update(DataSet) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
public:
int Update(System::Data::DataSet ^ dataSet);
public int Update (System.Data.DataSet dataSet);
abstract member Update : System.Data.DataSet -> int
Public Function Update (dataSet As DataSet) As Integer
Параметры
Возвращаемое значение
Количество строк, успешно обновленных из объекта DataSet.
Исключения
Попытка выполнить оператор INSERT, UPDATE или DELETE привела к нулевому количеству обработанных записей.
Примеры
В следующем примере производный класс OleDbDataAdapterиспользуется для Update источника данных. В этом примере предполагается, что вы создали OleDbDataAdapter и DataSet.
static private DataSet CreateCommandAndUpdate(
string connectionString,
string queryString)
{
DataSet dataSet = new DataSet();
using (OleDbConnection connection =
new OleDbConnection(connectionString))
{
connection.Open();
OleDbDataAdapter adapter =
new OleDbDataAdapter();
adapter.SelectCommand =
new OleDbCommand(queryString, connection);
OleDbCommandBuilder builder =
new OleDbCommandBuilder(adapter);
adapter.Fill(dataSet);
// Code to modify data in the DataSet here.
// Without the OleDbCommandBuilder, this line would fail.
adapter.UpdateCommand = builder.GetUpdateCommand();
adapter.Update(dataSet);
}
return dataSet;
}
Public Function CreateCommandAndUpdate( _
ByVal connectionString As String, _
ByVal queryString As String) As DataSet
Dim dataSet As New DataSet()
Using connection As New OleDbConnection(connectionString)
connection.Open()
Dim adapter As New OleDbDataAdapter()
adapter.SelectCommand = New OleDbCommand( _
queryString, connection)
Dim builder As OleDbCommandBuilder = _
New OleDbCommandBuilder(adapter)
adapter.Fill(dataSet)
' Code to modify the data in the DataSet here.
' Without the OleDbCommandBuilder this line would fail.
builder.GetUpdateCommand()
adapter.Update(dataSet)
End Using
Return dataSet
End Function
Комментарии
Когда приложение вызывает Update метод , IDataAdapter класс проверяет RowState свойство и выполняет необходимые инструкции INSERT, UPDATE или DELETE итеративно для каждой строки в зависимости от порядка индексов, настроенных в DataSet. Например, Update может выполнить инструкцию DELETE, за которой следует инструкция INSERT, а затем еще одну инструкцию DELETE из-за порядка строк в DataTable.
Имейте в виду, что эти инструкции не выполняются как пакетный процесс; каждая строка обновляется по отдельности. Приложение может вызвать метод , GetChanges если необходимо управлять последовательностью типов инструкций (например, INSERTs перед UPDATEs). Дополнительные сведения см. в разделе Обновление источников данных с помощью DataAdapters.
Если инструкции INSERT, UPDATE или DELETE не указаны, Update метод создает исключение. Однако можно создать объект или OleDbCommandBuilder для автоматического SqlCommandBuilder создания инструкций SQL для обновлений из одной таблицы, если задано SelectCommand
свойство поставщика данных платформа .NET Framework. Затем все дополнительные инструкции SQL, которые не заданы, создаются CommandBuilder. Для этой логики создания требуется, чтобы сведения о ключевом столбце присутствовали DataSetв . Дополнительные сведения см. в разделе Создание команд с помощью CommandBuilders.
Метод Update извлекает строки из таблицы, указанной в первом сопоставлении, перед выполнением обновления. Затем Update обновляет строку, используя значение UpdatedRowSource свойства . Все возвращаемые дополнительные строки игнорируются.
После загрузки всех данных обратно в DataSetвызывается событие , OnRowUpdated что позволяет пользователю проверить выверяемую DataSet строку и все выходные параметры, возвращаемые командой . После успешного обновления строки изменения в этой строке принимаются.
При использовании Updateпорядок выполнения выглядит следующим образом:
Значения в перемещаются DataRow в значения параметров.
Возникает событие OnRowUpdating.
Команда выполняется.
Если для команды задано значение
FirstReturnedRecord
, то первый возвращенный результат помещается в DataRow.Если есть выходные параметры, они помещаются в DataRow.
Возникает событие OnRowUpdated.
Вызывается метод AcceptChanges.
Каждая команда, связанная с , IDataAdapter обычно имеет коллекцию параметров, связанную с ней. Параметры сопоставляются с текущей строкой с помощью SourceColumn
свойств и SourceVersion
класса поставщика Parameter
данных платформа .NET Framework.
SourceColumn
ссылается на столбец DataTable , на который IDataAdapter ссылается для получения значений параметров для текущей строки.
SourceColumn
ссылается на несопоставленное имя столбца перед применением каких-либо сопоставлений таблиц. Если SourceColumn
ссылается на несуществующий столбец, то выполняемое действие зависит от одного из следующих MissingMappingAction значений.
Значение перечисления | Предпринятое действие |
---|---|
MissingMappingAction.Passthrough |
Используйте имена исходных столбцов и таблиц в , DataSet если сопоставление отсутствует. |
MissingMappingAction.Ignore |
Создается SystemException объект . Если сопоставления заданы явным образом, отсутствует сопоставление для входного параметра, как правило, вызвано ошибкой. |
MissingMappingAction.Error |
Создается SystemException объект . |
Свойство SourceColumn
также используется для сопоставления значения выходных или входных/выходных параметров с DataSet
. Исключение создается, если оно ссылается на несуществующий столбец.
Свойство SourceVersion
класса поставщика Parameter
данных платформа .NET Framework определяет, следует ли использовать Original
Current
, или Proposed
версию значения столбца. Эта возможность часто используется для включения исходных значений в предложение WHERE инструкции UPDATE для проверка нарушений оптимистического параллелизма.
Примечание
Если при обновлении строки возникает ошибка, возникает исключение и выполнение обновления прекращается. Чтобы продолжить операцию обновления без создания исключений при обнаружении ошибки, задайте ContinueUpdateOnError для свойства значение true
перед вызовом Update. Вы также можете реагировать на ошибки по каждой строке RowUpdated
в рамках события DataAdapter. Чтобы продолжить операцию обновления без создания исключения в событии RowUpdated
, присвойте свойству StatusRowUpdatedEventArgs объекта значение Continue.