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)
public:
int Update(System::Data::DataSet ^ dataSet, System::String ^ srcTable);
public int Update (System.Data.DataSet dataSet, string srcTable);
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 метод создает исключение. Однако можно создать или OleDbCommandBuilder объект для автоматического создания инструкций SqlCommandBuilder SQL для обновлений одной таблицы, если задать SelectCommand
свойство поставщика данных платформа .NET Framework. Затем все дополнительные инструкции SQL, которые не заданы командой CommandBuilder. Эта логика создания требует, чтобы сведения о ключевом столбце присутствовали DataSetв . Дополнительные сведения см. в разделе "Создание команд с помощью commandBuilders".
Этот Update метод поддерживает сценарии, в которых DataSet содержится несколько DataTable объектов, имена которых отличаются только по регистру. Если несколько таблиц с одинаковым именем, но в другом случае, существуют в , DataSet
Update выполняет сравнение с учетом регистра для поиска соответствующей таблицы и создает исключение, если точное совпадение не существует. Следующий код 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 A. Если сопоставления заданы явным образом, отсутствует сопоставление для входного параметра, как правило, является результатом ошибки. |
MissingMappingAction.Error |
Создается объект SystemException A. |
Это SourceColumn
свойство также используется для сопоставления значения выходных или входных и выходных параметров с DataSet
параметров . Если он ссылается на несуществующий столбец, создается исключение.
Свойство SourceVersion
класса поставщика данных Parameter
платформа .NET Framework определяет, следует ли использовать исходную, текущую или предлагаемую версию значения столбца. Эта возможность часто используется для включения исходных значений в предложение WHERE инструкции UPDATE для проверки нарушений оптимистического параллелизма.
Примечание
Если при обновлении строки возникает ошибка, возникает исключение, и выполнение обновления прекращается. Чтобы продолжить операцию обновления без создания исключений при возникновении ошибки, задайте для свойства значение ContinueUpdateOnError true
перед вызовом Update. Вы также можете реагировать на ошибки на основе каждой строки в RowUpdated
событии DataAdapter. Чтобы продолжить операцию обновления, не создавая исключение в событии RowUpdated
, задайте Status для свойства этого RowUpdatedEventArgs Continueсвойства значение .
См. также раздел
Применяется к
Update(DataRow[], DataTableMapping)
Обновляет значения в базе данных, выполняя соответствующие операторы INSERT, UPDATE или DELETE для каждой вставленной, обновленной или удаленной строки в указанном массиве объектов DataRow.
protected:
virtual int Update(cli::array <System::Data::DataRow ^> ^ dataRows, System::Data::Common::DataTableMapping ^ tableMapping);
protected virtual int Update (System.Data.DataRow[] dataRows, System.Data.Common.DataTableMapping tableMapping);
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 перед UPDAT). Дополнительные сведения см. в статье об обновлении источников данных с помощью DataAdapters.
Если инструкции INSERT, UPDATE или DELETE не указаны, Update метод создает исключение. Однако можно создать или OleDbCommandBuilder объект для автоматического создания инструкций SqlCommandBuilder 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 |
Создается объект A SystemException . Если сопоставления заданы явным образом, отсутствующие сопоставления для входного параметра обычно являются результатом ошибки. |
MissingMappingAction.Error |
Создается объект A SystemException . |
Свойство SourceColumn
также используется для сопоставления значения для выходных или входных и выходных параметров обратно с DataSet
. Если он ссылается на несуществующий столбец, создается исключение.
Свойство SourceVersion
класса поставщика Parameter
данных платформа .NET Framework определяет, следует ли использовать исходную, текущую или предлагаемую версию значения столбца. Эта возможность часто используется для включения исходных значений в предложение WHERE инструкции UPDATE для проверки нарушений оптимистического параллелизма.
Примечание
Если при обновлении строки возникает ошибка, возникает исключение, и выполнение обновления прекращается. Чтобы продолжить операцию обновления без создания исключений при возникновении ошибки, задайте ContinueUpdateOnError для свойства значение true
перед вызовом Update. Вы также можете отвечать на ошибки на основе каждой строки в RowUpdated
рамках события DataAdapter. Чтобы продолжить операцию обновления без создания исключения в событии RowUpdated
, задайте Status для свойства свойства RowUpdatedEventArgs Continue.
См. также раздел
Применяется к
Update(DataTable)
Обновляет значения в базе данных, выполняя соответствующие операторы INSERT, UPDATE или DELETE для каждой вставленной, обновленной или удаленной строки в указанном DataTable.
public:
int Update(System::Data::DataTable ^ dataTable);
public int Update (System.Data.DataTable dataTable);
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 перед UPDATE). Дополнительные сведения см. в разделе "Обновление источников данных с помощью 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 |
Создается объект A SystemException . Если сопоставления заданы явным образом, отсутствующие сопоставления для входного параметра обычно являются результатом ошибки. |
MissingMappingAction.Error |
Создается объект A SystemException . |
Свойство SourceColumn
также используется для сопоставления значения для выходных или входных и выходных параметров обратно с DataSet
. Если он ссылается на несуществующий столбец, создается исключение.
Свойство SourceVersion
класса поставщика Parameter
данных платформа .NET Framework определяет, следует ли использовать исходную, текущую или предлагаемую версию значения столбца. Эта возможность часто используется для включения исходных значений в предложение WHERE инструкции UPDATE для проверки нарушений оптимистического параллелизма.
Примечание
Если при обновлении строки возникает ошибка, возникает исключение, и выполнение обновления прекращается. Чтобы продолжить операцию обновления без создания исключений при возникновении ошибки, задайте ContinueUpdateOnError для свойства значение true
перед вызовом Update. Вы также можете отвечать на ошибки на основе каждой строки в RowUpdated
рамках события DataAdapter. Чтобы продолжить операцию обновления без создания исключения в событии RowUpdated
, задайте Status для свойства свойства RowUpdatedEventArgs Continue.
См. также раздел
Применяется к
Update(DataSet)
Обновляет значения в базе данных, выполняя соответствующие операторы INSERT, UPDATE или DELETE для каждой вставленной, обновленной или удаленной строки в указанном DataSet.
public:
override int Update(System::Data::DataSet ^ dataSet);
public override int Update (System.Data.DataSet dataSet);
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 перед UPDATE). Дополнительные сведения см. в разделе "Обновление источников данных с помощью 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 A. Если сопоставления заданы явным образом, отсутствует сопоставление для входного параметра, как правило, является результатом ошибки. |
MissingMappingAction.Error |
Создается объект SystemException A. |
Это SourceColumn
свойство также используется для сопоставления значения выходных или входных и выходных параметров с DataSet
параметров . Если он ссылается на несуществующий столбец, создается исключение.
Свойство SourceVersion
класса поставщика данных Parameter
платформа .NET Framework определяет, следует ли использовать исходную, текущую или предлагаемую версию значения столбца. Эта возможность часто используется для включения исходных значений в предложение WHERE инструкции UPDATE для проверки нарушений оптимистического параллелизма.
Примечание
Если при обновлении строки возникает ошибка, возникает исключение, и выполнение обновления прекращается. Чтобы продолжить операцию обновления без создания исключений при возникновении ошибки, задайте для свойства значение ContinueUpdateOnError true
перед вызовом Update. Вы также можете реагировать на ошибки на основе каждой строки в RowUpdated
событии DataAdapter. Чтобы продолжить операцию обновления, не создавая исключение в событии RowUpdated
, задайте Status для свойства этого RowUpdatedEventArgs Continueсвойства значение .
См. также раздел
Применяется к
Update(DataRow[])
Обновляет значения в базе данных, выполняя соответствующие операторы INSERT, UPDATE или DELETE для каждой вставленной, обновленной или удаленной строки в указанном массиве объектов DataSet.
public:
int Update(cli::array <System::Data::DataRow ^> ^ dataRows);
public int Update (System.Data.DataRow[] dataRows);
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 перед UPDATE). Дополнительные сведения см. в разделе "Обновление источников данных с помощью 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 A. Если сопоставления заданы явным образом, отсутствует сопоставление для входного параметра, как правило, является результатом ошибки. |
MissingMappingAction.Error |
Создается объект SystemException A. |
Это SourceColumn
свойство также используется для сопоставления значения выходных или входных и выходных параметров с DataSet
параметров . Если он ссылается на несуществующий столбец, создается исключение.
Свойство SourceVersion
класса поставщика данных Parameter
платформа .NET Framework определяет, следует ли использовать исходную, текущую или предлагаемую версию значения столбца. Эта возможность часто используется для включения исходных значений в предложение WHERE инструкции UPDATE для проверки нарушений оптимистического параллелизма.
Примечание
Если при обновлении строки возникает ошибка, возникает исключение, и выполнение обновления прекращается. Чтобы продолжить операцию обновления без создания исключений при возникновении ошибки, задайте для свойства значение ContinueUpdateOnError true
перед вызовом Update. Вы также можете реагировать на ошибки на основе каждой строки в RowUpdated
событии DataAdapter. Чтобы продолжить операцию обновления, не создавая исключение в событии RowUpdated
, задайте Status для свойства этого RowUpdatedEventArgs Continueсвойства значение .