DbDataAdapter.Update Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Обновляет значения в базе данных путем выполнения соответствующих инструкций INSERT, UPDATE или DELETE для каждой вставленной, обновленной или удаленной строки в строке DataSet.
Перегрузки
| Имя | Описание |
|---|---|
| Update(DataSet, String) |
Обновляет значения в базе данных путем выполнения соответствующих инструкций INSERT, UPDATE или DELETE для каждой вставленной, обновленной или удаленной строки в строке DataSet с указанным DataTable именем. |
| Update(DataRow[], DataTableMapping) |
Обновляет значения в базе данных путем выполнения соответствующих инструкций INSERT, UPDATE или DELETE для каждой вставленной, обновленной или удаленной строки в указанном массиве DataRow объектов. |
| Update(DataTable) |
Обновляет значения в базе данных путем выполнения соответствующих инструкций INSERT, UPDATE или DELETE для каждой вставленной, обновленной или удаленной строки в указанной строке DataTable. |
| Update(DataSet) |
Обновляет значения в базе данных путем выполнения соответствующих инструкций INSERT, UPDATE или DELETE для каждой вставленной, обновленной или удаленной строки в указанной строке DataSet. |
| Update(DataRow[]) |
Обновляет значения в базе данных путем выполнения соответствующих инструкций INSERT, UPDATE или DELETE для каждой вставленной, обновленной или удаленной строки в указанном массиве DataSet. |
Update(DataSet, String)
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
public:
int Update(System::Data::DataSet ^ dataSet, System::String ^ srcTable);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public int Update(System.Data.DataSet dataSet, string srcTable);
public int Update(System.Data.DataSet dataSet, string srcTable);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.Update : System.Data.DataSet * string -> int
override this.Update : System.Data.DataSet * string -> int
Public Function Update (dataSet As DataSet, srcTable As String) As Integer
Параметры
- srcTable
- String
Имя исходной таблицы, используемой для сопоставления таблиц.
Возвращаемое значение
Число строк, успешно обновленных из .DataSet
- Атрибуты
Исключения
Недопустимый DataSet .
Исходная таблица недопустима.
Попытка выполнить инструкцию INSERT, UPDATE или DELETE привела к нулю записей, затронутых.
Примеры
В следующем примере используется производный класс для OleDbDataAdapterобновления источника данных.
public DataSet CreateCmdsAndUpdate(string connectionString,
string queryString, string tableName)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand(queryString, connection);
OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);
connection.Open();
DataSet customers = new DataSet();
adapter.Fill(customers);
//code to modify data in dataset here
adapter.Update(customers, tableName);
return customers;
}
}
Public Function CreateCmdsAndUpdate(ByVal connectionString As String, _
ByVal queryString As String, _
ByVal tableName As String) As DataSet
Using connection As New OleDbConnection(connectionString)
Dim adapter As New OleDbDataAdapter()
adapter.SelectCommand = New OleDbCommand(queryString, connection)
Dim builder As New OleDbCommandBuilder(adapter)
connection.Open()
Dim customers As New DataSet()
adapter.Fill(customers)
' Code to modify data in DataSet here
adapter.Update(customers, tableName)
Return customers
End Using
End Function
Комментарии
При вызове Update метода DbDataAdapter приложение проверяет RowState свойство и выполняет необходимые инструкции INSERT, UPDATE или DELETE, итеративно для каждой строки в зависимости от порядка индексов, настроенных в нем DataSet. Например, Update может выполнять инструкцию DELETE, за которой следует инструкция INSERT, а затем другая инструкция DELETE из-за упорядочения строк в объекте DataTable.
Следует отметить, что эти инструкции не выполняются как пакетный процесс; каждая строка обновляется по отдельности. Приложение может вызывать GetChanges метод в ситуациях, когда необходимо контролировать последовательность типов инструкций (например, INSERT до UPDATE). Дополнительные сведения см. в разделе "Обновление источников данных с помощью DataAdapters".
Если инструкции INSERT, UPDATE или DELETE не указаны, Update метод создает исключение. Однако можно создать SqlCommandBuilder или OleDbCommandBuilder объект для автоматического создания инструкций SQL для одно табличных обновлений, если задать SelectCommand свойство поставщика данных .NET Framework. Затем все дополнительные инструкции SQL, которые не заданы командой CommandBuilder. Эта логика создания требует, чтобы в этой логике были представлены сведения о ключевых столбцах DataSet. Дополнительные сведения см. в разделе "Создание команд с помощью CommandBuilders".
Метод Update поддерживает сценарии, в которых DataSet содержится несколько DataTable объектов, имена которых отличаются только по регистру. Если несколько таблиц с одинаковым именем, но в другом случае существуют, DataSetUpdate выполняют сравнение с учетом регистра, чтобы найти соответствующую таблицу, и создает исключение, если точное совпадение не существует. Следующий код C# иллюстрирует это поведение.
DataSet ds = new DataSet();
ds.Tables.Add("aaa");
ds.Tables.Add("AAA");
adapter.Update(ds, "aaa"); // Updates "aaa", which already exists in the DataSet.
adapter.Update(ds, "AAA"); // Updates "AAA", which already exists in the DataSet.
adapter.Update(ds, "Aaa"); // Results in an exception.
Если Update вызывается и DataSet содержится только один, DataTable имя которого отличается только по регистру, оно DataTable обновляется. В этом сценарии сравнение не учитывает регистр. Следующий код C# иллюстрирует это поведение.
DataSet dataset = new DataSet();
dataset.Tables.Add("aaa");
adapter.Update(dataset, "AAA"); // Updates table "aaa" because only one similarly named table is in the DataSet.
Метод Update извлекает строки из таблицы, указанной в первом сопоставлении перед выполнением обновления. Затем Update обновляет строку с помощью значения UpdatedRowSource свойства. Все возвращаемые дополнительные строки игнорируются.
После загрузки всех данных обратно в DataSetOnRowUpdated объект вызывается событие, что позволяет пользователю проверять согласованную DataSet строку и все выходные параметры, возвращаемые командой. После успешного обновления строки принимаются изменения этой строки.
При использовании Updateпорядок выполнения выглядит следующим образом:
Значения в этом DataRow файле перемещаются в значения параметров.
Возникает событие OnRowUpdating.
Выполняется команда.
Если задано
FirstReturnedRecordзначение команды, введите первый возвращенный результат DataRow.Если есть выходные параметры, они помещаются в .DataRow
Возникает событие OnRowUpdated.
AcceptChanges вызывается.
Каждая команда, связанная с DbDataAdapter обычной коллекцией параметров, связана с ней. Параметры сопоставляются с текущей строкой с помощью SourceColumn и SourceVersion свойств класса поставщика Parameter данных .NET Framework.
SourceColumn ссылается на DataTable столбец, на который DbDataAdapter ссылаются ссылки для получения значений параметров для текущей строки.
SourceColumn ссылается на имя несопоставленного столбца перед применением сопоставлений таблиц. Если SourceColumn относится к несуществующему столбцу, действие, выполняемое, зависит от одного из следующих MissingMappingAction значений.
| Значение перечисления | Предпринятое действие |
|---|---|
MissingMappingAction.Passthrough |
Используйте имена исходных столбцов и имена таблиц в случае DataSet отсутствия сопоставления. |
MissingMappingAction.Ignore |
Создается объект SystemException . Если сопоставления явно заданы, отсутствующие сопоставления для входного параметра обычно являются результатом ошибки. |
MissingMappingAction.Error |
Создается объект SystemException . |
Свойство SourceColumn также используется для сопоставления значения выходных или входных или выходных параметров обратно с параметром DataSet. Исключение создается, если он ссылается на несуществующий столбец.
Свойство SourceVersion класса поставщика Parameter данных .NET Framework определяет, следует ли использовать исходную, текущую или предложенную версию значения столбца. Эта возможность часто используется для включения исходных значений в предложение WHERE инструкции UPDATE для проверки нарушений оптимистического параллелизма.
Замечание
Если при обновлении строки возникает ошибка, возникает исключение, и выполнение обновления прекращается. Чтобы продолжить операцию обновления без создания исключений при возникновении ошибки, задайте ContinueUpdateOnError для свойства значение true перед вызовом Update. Вы также можете реагировать на ошибки на основе каждой строки в RowUpdated событии DataAdapter. Чтобы продолжить операцию обновления без создания исключения в RowUpdated событии, задайте Status для свойства объекта RowUpdatedEventArgsContinueзначение .
См. также раздел
Применяется к
Update(DataRow[], DataTableMapping)
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
Обновляет значения в базе данных путем выполнения соответствующих инструкций INSERT, UPDATE или DELETE для каждой вставленной, обновленной или удаленной строки в указанном массиве DataRow объектов.
protected:
virtual int Update(cli::array <System::Data::DataRow ^> ^ dataRows, System::Data::Common::DataTableMapping ^ tableMapping);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
protected virtual int Update(System.Data.DataRow[] dataRows, System.Data.Common.DataTableMapping tableMapping);
protected virtual int Update(System.Data.DataRow[] dataRows, System.Data.Common.DataTableMapping tableMapping);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.Update : System.Data.DataRow[] * System.Data.Common.DataTableMapping -> int
override this.Update : System.Data.DataRow[] * System.Data.Common.DataTableMapping -> int
Protected Overridable Function Update (dataRows As DataRow(), tableMapping As DataTableMapping) As Integer
Параметры
- tableMapping
- DataTableMapping
Используемая TableMappings коллекция.
Возвращаемое значение
Количество строк, успешно обновляемых из массива DataRow объектов.
- Атрибуты
Исключения
Недопустимый DataSet .
Исходная таблица недопустима.
Обновление не DataRow существует.
–или–
Обновление не DataTable существует.
–или–
Не DataSet существует для использования в качестве источника.
Попытка выполнить инструкцию INSERT, UPDATE или DELETE привела к нулю записей, затронутых.
Комментарии
При вызове Update метода DbDataAdapter приложение проверяет 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 вызывается.
Каждая команда, связанная с DbDataAdapter обычной коллекцией параметров, связана с ней. Параметры сопоставляются с текущей строкой с помощью SourceColumn и SourceVersion свойств класса поставщика Parameter данных .NET Framework.
SourceColumn ссылается на DataTable столбец, на который DbDataAdapter ссылаются ссылки для получения значений параметров для текущей строки.
SourceColumn ссылается на имя несопоставленного столбца перед применением сопоставлений таблиц. Если SourceColumn относится к несуществующему столбцу, действие, выполняемое, зависит от одного из следующих MissingMappingAction значений.
| Значение перечисления | Предпринятое действие |
|---|---|
MissingMappingAction.Passthrough |
Используйте имена исходных столбцов и имена таблиц в случае DataSet отсутствия сопоставления. |
MissingMappingAction.Ignore |
Создается объект SystemException . Если сопоставления явно заданы, отсутствующие сопоставления для входного параметра обычно являются результатом ошибки. |
MissingMappingAction.Error |
Создается объект SystemException . |
Свойство SourceColumn также используется для сопоставления значения выходных или входных или выходных параметров обратно с параметром DataSet. Исключение создается, если он ссылается на несуществующий столбец.
Свойство SourceVersion класса поставщика Parameter данных .NET Framework определяет, следует ли использовать исходную, текущую или предложенную версию значения столбца. Эта возможность часто используется для включения исходных значений в предложение WHERE инструкции UPDATE для проверки нарушений оптимистического параллелизма.
Замечание
Если при обновлении строки возникает ошибка, возникает исключение, и выполнение обновления прекращается. Чтобы продолжить операцию обновления без создания исключений при возникновении ошибки, задайте ContinueUpdateOnError для свойства значение true перед вызовом Update. Вы также можете реагировать на ошибки на основе каждой строки в RowUpdated событии DataAdapter. Чтобы продолжить операцию обновления без создания исключения в RowUpdated событии, задайте Status для свойства объекта RowUpdatedEventArgsContinueзначение .
См. также раздел
Применяется к
Update(DataTable)
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
Обновляет значения в базе данных путем выполнения соответствующих инструкций INSERT, UPDATE или DELETE для каждой вставленной, обновленной или удаленной строки в указанной строке DataTable.
public:
int Update(System::Data::DataTable ^ dataTable);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public int Update(System.Data.DataTable dataTable);
public int Update(System.Data.DataTable dataTable);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.Update : System.Data.DataTable -> int
override this.Update : System.Data.DataTable -> int
Public Function Update (dataTable As DataTable) As Integer
Параметры
Возвращаемое значение
Число строк, успешно обновленных из .DataTable
- Атрибуты
Исключения
Недопустимый DataSet .
Исходная таблица недопустима.
Обновление не DataRow существует.
–или–
Обновление не DataTable существует.
–или–
Не DataSet существует для использования в качестве источника.
Попытка выполнить инструкцию INSERT, UPDATE или DELETE привела к нулю записей, затронутых.
Примеры
В следующем примере используется производный класс для OleDbDataAdapterобновления источника данных.
public DataTable CreateCmdsAndUpdate(string connectionString,
string queryString)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand(queryString, connection);
OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);
connection.Open();
DataTable customers = new DataTable();
adapter.Fill(customers);
// code to modify data in DataTable here
adapter.Update(customers);
return customers;
}
}
Public Function CreateCmdsAndUpdate(ByVal connectionString As String, _
ByVal queryString As String) As DataTable
Using connection As New OleDbConnection(connectionString)
Dim adapter As New OleDbDataAdapter()
adapter.SelectCommand = New OleDbCommand(queryString, connection)
Dim builder As New OleDbCommandBuilder(adapter)
connection.Open()
Dim customers As New DataTable()
adapter.Fill(customers)
' Code to modify data in DataTable here
adapter.Update(customers)
Return customers
End Using
End Function
Комментарии
При вызове Update метода DbDataAdapter приложение проверяет 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 вызывается.
Каждая команда, связанная с DbDataAdapter обычной коллекцией параметров, связана с ней. Параметры сопоставляются с текущей строкой с помощью SourceColumn и SourceVersion свойств класса поставщика Parameter данных .NET Framework.
SourceColumn ссылается на DataTable столбец, на который DbDataAdapter ссылаются ссылки для получения значений параметров для текущей строки.
SourceColumn ссылается на имя несопоставленного столбца перед применением сопоставлений таблиц. Если SourceColumn относится к несуществующему столбцу, действие, выполняемое, зависит от одного из следующих MissingMappingAction значений.
| Значение перечисления | Предпринятое действие |
|---|---|
MissingMappingAction.Passthrough |
Используйте имена исходных столбцов и имена таблиц в случае DataSet отсутствия сопоставления. |
MissingMappingAction.Ignore |
Создается объект SystemException . Если сопоставления явно заданы, отсутствующие сопоставления для входного параметра обычно являются результатом ошибки. |
MissingMappingAction.Error |
Создается объект SystemException . |
Свойство SourceColumn также используется для сопоставления значения выходных или входных или выходных параметров обратно с параметром DataSet. Исключение создается, если он ссылается на несуществующий столбец.
Свойство SourceVersion класса поставщика Parameter данных .NET Framework определяет, следует ли использовать исходную, текущую или предложенную версию значения столбца. Эта возможность часто используется для включения исходных значений в предложение WHERE инструкции UPDATE для проверки нарушений оптимистического параллелизма.
Замечание
Если при обновлении строки возникает ошибка, возникает исключение, и выполнение обновления прекращается. Чтобы продолжить операцию обновления без создания исключений при возникновении ошибки, задайте ContinueUpdateOnError для свойства значение true перед вызовом Update. Вы также можете реагировать на ошибки на основе каждой строки в RowUpdated событии DataAdapter. Чтобы продолжить операцию обновления без создания исключения в RowUpdated событии, задайте Status для свойства объекта RowUpdatedEventArgsContinueзначение .
См. также раздел
Применяется к
Update(DataSet)
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
Обновляет значения в базе данных путем выполнения соответствующих инструкций INSERT, UPDATE или DELETE для каждой вставленной, обновленной или удаленной строки в указанной строке DataSet.
public:
override int Update(System::Data::DataSet ^ dataSet);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public override int Update(System.Data.DataSet dataSet);
public override int Update(System.Data.DataSet dataSet);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.Update : System.Data.DataSet -> int
override this.Update : System.Data.DataSet -> int
Public Overrides Function Update (dataSet As DataSet) As Integer
Параметры
Возвращаемое значение
Число строк, успешно обновленных из .DataSet
Реализации
- Атрибуты
Исключения
Исходная таблица недопустима.
Попытка выполнить инструкцию INSERT, UPDATE или DELETE привела к нулю записей, затронутых.
Примеры
В следующем примере используется производный класс для OleDbDataAdapterобновления источника данных.
public DataSet CreateCmdsAndUpdate(string connectionString,
string queryString)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand(queryString, connection);
OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);
connection.Open();
DataSet customers = new DataSet();
adapter.Fill(customers);
//code to modify data in dataset here
adapter.Update(customers);
return customers;
}
}
Public Function CreateCmdsAndUpdate(ByVal connectionString As String, _
ByVal queryString As String) As DataSet
Using connection As New OleDbConnection(connectionString)
Dim adapter As New OleDbDataAdapter()
adapter.SelectCommand = New OleDbCommand(queryString, connection)
Dim builder As New OleDbCommandBuilder(adapter)
connection.Open()
Dim customers As New DataSet()
adapter.Fill(customers)
' Code to modify data in DataSet here
adapter.Update(customers)
Return customers
End Using
End Function
Комментарии
При вызове Update метода DbDataAdapter приложение проверяет 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 вызывается.
Каждая команда, связанная с DbDataAdapter обычной коллекцией параметров, связана с ней. Параметры сопоставляются с текущей строкой с помощью SourceColumn и SourceVersion свойств класса поставщика Parameter данных .NET Framework.
SourceColumn ссылается на DataTable столбец, на который DbDataAdapter ссылаются ссылки для получения значений параметров для текущей строки.
SourceColumn ссылается на имя несопоставленного столбца перед применением сопоставлений таблиц. Если SourceColumn относится к несуществующему столбцу, действие, выполняемое, зависит от одного из следующих MissingMappingAction значений.
| Значение перечисления | Предпринятое действие |
|---|---|
MissingMappingAction.Passthrough |
Используйте имена исходных столбцов и имена таблиц в случае DataSet отсутствия сопоставления. |
MissingMappingAction.Ignore |
Создается объект SystemException . Если сопоставления явно заданы, отсутствующие сопоставления для входного параметра обычно являются результатом ошибки. |
MissingMappingAction.Error |
Создается объект SystemException . |
Свойство SourceColumn также используется для сопоставления значения выходных или входных или выходных параметров обратно с параметром DataSet. Исключение создается, если он ссылается на несуществующий столбец.
Свойство SourceVersion класса поставщика Parameter данных .NET Framework определяет, следует ли использовать исходную, текущую или предложенную версию значения столбца. Эта возможность часто используется для включения исходных значений в предложение WHERE инструкции UPDATE для проверки нарушений оптимистического параллелизма.
Замечание
Если при обновлении строки возникает ошибка, возникает исключение, и выполнение обновления прекращается. Чтобы продолжить операцию обновления без создания исключений при возникновении ошибки, задайте ContinueUpdateOnError для свойства значение true перед вызовом Update. Вы также можете реагировать на ошибки на основе каждой строки в RowUpdated событии DataAdapter. Чтобы продолжить операцию обновления без создания исключения в RowUpdated событии, задайте Status для свойства объекта RowUpdatedEventArgsContinueзначение .
См. также раздел
Применяется к
Update(DataRow[])
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
Обновляет значения в базе данных путем выполнения соответствующих инструкций INSERT, UPDATE или DELETE для каждой вставленной, обновленной или удаленной строки в указанном массиве DataSet.
public:
int Update(cli::array <System::Data::DataRow ^> ^ dataRows);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public int Update(System.Data.DataRow[] dataRows);
public int Update(System.Data.DataRow[] dataRows);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.Update : System.Data.DataRow[] -> int
override this.Update : System.Data.DataRow[] -> int
Public Function Update (dataRows As DataRow()) As Integer
Параметры
Возвращаемое значение
Число строк, успешно обновленных из .DataSet
- Атрибуты
Исключения
Недопустимый DataSet .
Исходная таблица недопустима.
Обновление не DataRow существует.
–или–
Обновление не DataTable существует.
–или–
Не DataSet существует для использования в качестве источника.
Попытка выполнить инструкцию INSERT, UPDATE или DELETE привела к нулю записей, затронутых.
Примеры
В следующем примере используется производный класс для OleDbDataAdapterобновления источника данных.
public DataSet CreateCmdsAndUpdate(string connectionString,
string queryString)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand(queryString, connection);
OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);
connection.Open();
DataSet customers = new DataSet();
adapter.Fill(customers);
//code to modify data in dataset here
//Insert new records from DataSet
DataRow[] rows = customers.Tables[0].Select(
null, null, DataViewRowState.Added);
adapter.Update(rows);
return customers;
}
}
Public Function CreateCmdsAndUpdate(ByVal connectionString As String, _
ByVal queryString As String) As DataSet
Using connection As New OleDbConnection(connectionString)
Dim adapter As New OleDbDataAdapter()
adapter.SelectCommand = New OleDbCommand(queryString, connection)
Dim builder As New OleDbCommandBuilder(adapter)
connection.Open()
Dim customers As New DataSet()
adapter.Fill(customers)
' Code to modify data in DataSet here
' Insert new records from DataSet
Dim rows() As DataRow = customers.Tables(0).Select( _
Nothing, Nothing, DataViewRowState.Added)
adapter.Update(rows)
Return customers
End Using
End Function
Комментарии
При вызове Update метода DbDataAdapter приложение проверяет 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 вызывается.
Каждая команда, связанная с DbDataAdapter обычной коллекцией параметров, связана с ней. Параметры сопоставляются с текущей строкой с помощью SourceColumn и SourceVersion свойств класса поставщика Parameter данных .NET Framework.
SourceColumn ссылается на DataTable столбец, на который DbDataAdapter ссылаются ссылки для получения значений параметров для текущей строки.
SourceColumn ссылается на имя несопоставленного столбца перед применением сопоставлений таблиц. Если SourceColumn относится к несуществующему столбцу, действие, выполняемое, зависит от одного из следующих MissingMappingAction значений.
| Значение перечисления | Предпринятое действие |
|---|---|
MissingMappingAction.Passthrough |
Используйте имена исходных столбцов и имена таблиц в случае DataSet отсутствия сопоставления. |
MissingMappingAction.Ignore |
Создается объект SystemException . Если сопоставления явно заданы, отсутствующие сопоставления для входного параметра обычно являются результатом ошибки. |
MissingMappingAction.Error |
Создается объект SystemException . |
Свойство SourceColumn также используется для сопоставления значения выходных или входных или выходных параметров обратно с параметром DataSet. Исключение создается, если он ссылается на несуществующий столбец.
Свойство SourceVersion класса поставщика Parameter данных .NET Framework определяет, следует ли использовать исходную, текущую или предложенную версию значения столбца. Эта возможность часто используется для включения исходных значений в предложение WHERE инструкции UPDATE для проверки нарушений оптимистического параллелизма.
Замечание
Если при обновлении строки возникает ошибка, возникает исключение, и выполнение обновления прекращается. Чтобы продолжить операцию обновления без создания исключений при возникновении ошибки, задайте ContinueUpdateOnError для свойства значение true перед вызовом Update. Вы также можете реагировать на ошибки на основе каждой строки в RowUpdated событии DataAdapter. Чтобы продолжить операцию обновления без создания исключения в RowUpdated событии, задайте Status для свойства объекта RowUpdatedEventArgsContinueзначение .