Поделиться через


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

Обновляет значения в базе данных путем выполнения соответствующих инструкций INSERT, UPDATE или DELETE для каждой вставленной, обновленной или удаленной строки в строке DataSet с указанным DataTable именем.

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

Параметры

dataSet
DataSet

Используется DataSet для обновления источника данных.

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порядок выполнения выглядит следующим образом:

  1. Значения в этом DataRow файле перемещаются в значения параметров.

  2. Возникает событие OnRowUpdating.

  3. Выполняется команда.

  4. Если задано FirstReturnedRecordзначение команды, введите первый возвращенный результат DataRow.

  5. Если есть выходные параметры, они помещаются в .DataRow

  6. Возникает событие OnRowUpdated.

  7. 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

Параметры

dataRows
DataRow[]

Массив объектов, используемых DataRow для обновления источника данных.

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порядок выполнения выглядит следующим образом:

  1. Значения в этом DataRow файле перемещаются в значения параметров.

  2. Возникает событие OnRowUpdating.

  3. Выполняется команда.

  4. Если задано FirstReturnedRecordзначение команды, введите первый возвращенный результат DataRow.

  5. Если есть выходные параметры, они помещаются в .DataRow

  6. Возникает событие OnRowUpdated.

  7. 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
DataTable

Используется DataTable для обновления источника данных.

Возвращаемое значение

Число строк, успешно обновленных из .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порядок выполнения выглядит следующим образом:

  1. Значения в этом DataRow файле перемещаются в значения параметров.

  2. Возникает событие OnRowUpdating.

  3. Выполняется команда.

  4. Если задано FirstReturnedRecordзначение команды, введите первый возвращенный результат DataRow.

  5. Если есть выходные параметры, они помещаются в .DataRow

  6. Возникает событие OnRowUpdated.

  7. 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
DataSet

Используется DataSet для обновления источника данных.

Возвращаемое значение

Число строк, успешно обновленных из .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порядок выполнения выглядит следующим образом:

  1. Значения в этом DataRow файле перемещаются в значения параметров.

  2. Возникает событие OnRowUpdating.

  3. Выполняется команда.

  4. Если задано FirstReturnedRecordзначение команды, введите первый возвращенный результат DataRow.

  5. Если есть выходные параметры, они помещаются в .DataRow

  6. Возникает событие OnRowUpdated.

  7. 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

Параметры

dataRows
DataRow[]

Массив объектов, используемых DataRow для обновления источника данных.

Возвращаемое значение

Число строк, успешно обновленных из .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порядок выполнения выглядит следующим образом:

  1. Значения в этом DataRow файле перемещаются в значения параметров.

  2. Возникает событие OnRowUpdating.

  3. Выполняется команда.

  4. Если задано FirstReturnedRecordзначение команды, первый возвращенный результат помещается в .DataRow

  5. Если есть выходные параметры, они помещаются в .DataRow

  6. Возникает событие OnRowUpdated.

  7. 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значение .

См. также раздел

Применяется к