IDataAdapter.Update(DataSet) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
public:
int Update(System::Data::DataSet ^ dataSet);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public int Update(System.Data.DataSet dataSet);
public int Update(System.Data.DataSet dataSet);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
abstract member Update : System.Data.DataSet -> int
abstract member Update : System.Data.DataSet -> int
Public Function Update (dataSet As DataSet) As Integer
Параметры
Возвращаемое значение
Число строк, успешно обновленных из .DataSet
- Атрибуты
Исключения
Попытка выполнить инструкцию INSERT, UPDATE или DELETE привела к нулю записей, затронутых.
Примеры
В следующем примере для источника данных используется производный классOleDbDataAdapterUpdate. В этом примере предполагается, что вы создали 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 метод создает исключение. Однако можно создать SqlCommandBuilder или OleDbCommandBuilder объект для автоматического создания инструкций SQL для одно табличных обновлений, если задать SelectCommand свойство поставщика данных .NET Framework. Затем все дополнительные инструкции SQL, которые не заданы командой CommandBuilder. Эта логика создания требует, чтобы в этой логике были представлены сведения о ключевых столбцах DataSet. Дополнительные сведения см. в разделе "Создание команд с помощью CommandBuilders".
Метод Update извлекает строки из таблицы, указанной в первом сопоставлении перед выполнением обновления. Затем Update обновляет строку с помощью значения UpdatedRowSource свойства. Все возвращаемые дополнительные строки игнорируются.
После загрузки всех данных обратно в DataSetOnRowUpdated объект вызывается событие, что позволяет пользователю проверять согласованную 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 определяет, следует ли использовать OriginalCurrentзначение столбца или Proposed версию столбца. Эта возможность часто используется для включения исходных значений в предложение WHERE инструкции UPDATE для проверки нарушений оптимистического параллелизма.
Замечание
Если при обновлении строки возникает ошибка, возникает исключение, и выполнение обновления прекращается. Чтобы продолжить операцию обновления без создания исключений при возникновении ошибки, задайте ContinueUpdateOnError для свойства значение true перед вызовом Update. Вы также можете реагировать на ошибки на основе каждой строки в RowUpdated событии DataAdapter. Чтобы продолжить операцию обновления без создания исключения в RowUpdated событии, задайте Status для свойства объекта RowUpdatedEventArgsContinueзначение .