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


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

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

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

Параметры

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 перед ОБНОВЛЕНИЕм). Дополнительные сведения см. в разделе Обновление источников данных с помощью DataAdapters.

Если инструкции INSERT, UPDATE или DELETE не указаны, Update метод создает исключение. Однако можно создать объект или OleDbCommandBuilder для автоматического SqlCommandBuilder создания инструкций 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 свойства . Все возвращаемые дополнительные строки игнорируются.

После загрузки всех данных обратно в DataSetвызывается событие , OnRowUpdated что позволяет пользователю проверить выверяемую 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 , присвойте свойству StatusRowUpdatedEventArgs объекта значение Continue.

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

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

Update(DataRow[], DataTableMapping)

Исходный код:
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);
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

Параметры

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 метод создает исключение. Однако можно создать объект или OleDbCommandBuilder для автоматического SqlCommandBuilder создания инструкций SQL для обновлений из одной таблицы, если задано SelectCommand свойство поставщика данных платформа .NET Framework. Затем все дополнительные инструкции SQL, которые не заданы, создаются CommandBuilder. Для этой логики создания требуется, чтобы сведения о ключевом столбце присутствовали DataSetв . Дополнительные сведения см. в разделе Создание команд с помощью CommandBuilders.

Метод Update извлекает строки из таблицы, указанной в первом сопоставлении, перед выполнением обновления. Затем Update обновляет строку, используя значение UpdatedRowSource свойства . Все возвращаемые дополнительные строки игнорируются.

После загрузки всех данных обратно в DataSetвызывается событие , OnRowUpdated что позволяет пользователю проверить выверяемую 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 , присвойте свойству StatusRowUpdatedEventArgs объекта значение Continue.

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

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

Update(DataTable)

Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs

Обновляет значения в базе данных, выполняя соответствующие операторы 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
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 метод создает исключение. Однако можно создать объект или OleDbCommandBuilder для автоматического SqlCommandBuilder создания инструкций SQL для обновлений из одной таблицы, если задано SelectCommand свойство поставщика данных платформа .NET Framework. Затем все дополнительные инструкции SQL, которые не заданы, создаются CommandBuilder. Для этой логики создания требуется, чтобы сведения о ключевом столбце присутствовали DataSetв . Дополнительные сведения см. в разделе Создание команд с помощью CommandBuilders.

Метод Update извлекает строки из таблицы, указанной в первом сопоставлении, перед выполнением обновления. Затем Update обновляет строку, используя значение UpdatedRowSource свойства . Все возвращаемые дополнительные строки игнорируются.

После загрузки всех данных обратно в DataSetвызывается событие , OnRowUpdated что позволяет пользователю проверить выверяемую 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 , присвойте свойству StatusRowUpdatedEventArgs объекта значение Continue.

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

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

Update(DataSet)

Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs

Обновляет значения в базе данных, выполняя соответствующие операторы 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
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 метод создает исключение. Однако можно создать объект или OleDbCommandBuilder для автоматического SqlCommandBuilder создания инструкций SQL для обновлений из одной таблицы, если задано SelectCommand свойство поставщика данных платформа .NET Framework. Затем все дополнительные инструкции SQL, которые не заданы, создаются CommandBuilder. Для этой логики создания требуется, чтобы сведения о ключевом столбце присутствовали DataSetв . Дополнительные сведения см. в разделе Создание команд с помощью CommandBuilders.

Метод Update извлекает строки из таблицы, указанной в первом сопоставлении, перед выполнением обновления. Затем Update обновляет строку, используя значение UpdatedRowSource свойства . Все возвращаемые дополнительные строки игнорируются.

После загрузки всех данных обратно в DataSetвызывается событие , OnRowUpdated что позволяет пользователю проверить выверяемую 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 , присвойте свойству StatusRowUpdatedEventArgs объекта значение Continue.

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

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

Update(DataRow[])

Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs

Обновляет значения в базе данных, выполняя соответствующие операторы 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

Параметры

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 метод создает исключение. Однако можно создать объект или OleDbCommandBuilder для автоматического SqlCommandBuilder создания инструкций SQL для обновлений из одной таблицы, если задано SelectCommand свойство поставщика данных платформа .NET Framework. Затем все дополнительные инструкции SQL, которые не заданы, создаются CommandBuilder. Для этой логики создания требуется, чтобы сведения о ключевом столбце присутствовали DataSetв . Дополнительные сведения см. в разделе Создание команд с помощью CommandBuilders.

Метод Update извлекает строки из таблицы, указанной в первом сопоставлении, перед выполнением обновления. Затем Update обновляет строку, используя значение UpdatedRowSource свойства . Все возвращаемые дополнительные строки игнорируются.

После загрузки всех данных обратно в DataSetвызывается событие , OnRowUpdated что позволяет пользователю проверить выверяемую 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 , присвойте свойству StatusRowUpdatedEventArgs объекта значение Continue.

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

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