DbDataAdapter.Update Metoda

Definicja

Aktualizuje wartości w bazie danych, wykonując odpowiednie instrukcje INSERT, UPDATE lub DELETE dla każdego wstawionego, zaktualizowanego lub usuniętego wiersza w DataSet.

Przeciążenia

Nazwa Opis
Update(DataSet, String)

Aktualizuje wartości w bazie danych, wykonując odpowiednie instrukcje INSERT, UPDATE lub DELETE dla każdego wstawionego, zaktualizowanego lub usuniętego wiersza z DataSet określoną DataTable nazwą.

Update(DataRow[], DataTableMapping)

Aktualizuje wartości w bazie danych, wykonując odpowiednie instrukcje INSERT, UPDATE lub DELETE dla każdego wstawionego, zaktualizowanego lub usuniętego DataRow wiersza w określonej tablicy obiektów.

Update(DataTable)

Aktualizuje wartości w bazie danych, wykonując odpowiednie instrukcje INSERT, UPDATE lub DELETE dla każdego wstawionego, zaktualizowanego lub usuniętego wiersza w określonym DataTablewierszu .

Update(DataSet)

Aktualizuje wartości w bazie danych, wykonując odpowiednie instrukcje INSERT, UPDATE lub DELETE dla każdego wstawionego, zaktualizowanego lub usuniętego wiersza w określonym DataSetwierszu .

Update(DataRow[])

Aktualizuje wartości w bazie danych, wykonując odpowiednie instrukcje INSERT, UPDATE lub DELETE dla każdego wstawionego, zaktualizowanego lub usuniętego wiersza w określonej tablicy w DataSetobiekcie .

Update(DataSet, String)

Źródło:
DbDataAdapter.cs
Źródło:
DbDataAdapter.cs
Źródło:
DbDataAdapter.cs
Źródło:
DbDataAdapter.cs
Źródło:
DbDataAdapter.cs

Aktualizuje wartości w bazie danych, wykonując odpowiednie instrukcje INSERT, UPDATE lub DELETE dla każdego wstawionego, zaktualizowanego lub usuniętego wiersza z DataSet określoną DataTable nazwą.

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

Parametry

dataSet
DataSet

DataSet używane do aktualizowania źródła danych.

srcTable
String

Nazwa tabeli źródłowej do użycia na potrzeby mapowania tabel.

Zwraca

Liczba wierszy pomyślnie zaktualizowanych z elementu DataSet.

Atrybuty

Wyjątki

Element DataSet jest nieprawidłowy.

Tabela źródłowa jest nieprawidłowa.

Próba wykonania instrukcji INSERT, UPDATE lub DELETE spowodowała zero rekordów, których dotyczy problem.

Przykłady

W poniższym przykładzie użyto klasy pochodnej OleDbDataAdapter, aby zaktualizować źródło danych.

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

Uwagi

Gdy aplikacja wywołuje Update metodę, DbDataAdapter funkcja sprawdza RowState właściwość i wykonuje wymagane instrukcje INSERT, UPDATE lub DELETE iteracyjne dla każdego wiersza na podstawie kolejności indeksów skonfigurowanych w obiekcie DataSet. Na przykład Update może wykonać instrukcję DELETE, a następnie instrukcję INSERT, a następnie inną instrukcję DELETE ze względu na kolejność wierszy w DataTableobiekcie .

Należy zauważyć, że te instrukcje nie są wykonywane jako proces wsadowy; każdy wiersz jest aktualizowany indywidualnie. Aplikacja może wywołać metodę GetChanges w sytuacjach, w których należy kontrolować sekwencję typów instrukcji (na przykład INSERT przed aktualizacją). Aby uzyskać więcej informacji, zobacz Aktualizowanie źródeł danych za pomocą elementów DataAdapters.

Jeśli instrukcje INSERT, UPDATE lub DELETE nie zostały określone, Update metoda generuje wyjątek. Można jednak utworzyć SqlCommandBuilder obiekt lub OleDbCommandBuilder w celu automatycznego generowania instrukcji SQL dla aktualizacji z jedną tabelą, jeśli ustawisz SelectCommand właściwość dostawcy danych programu .NET Framework. Następnie wszystkie dodatkowe instrukcje SQL, które nie zostały ustawione, są generowane przez narzędzie CommandBuilder. Ta logika generowania wymaga obecności informacji o kolumnie klucza w obiekcie DataSet. Aby uzyskać więcej informacji, zobacz Generowanie poleceń za pomocą poleceń CommandBuilders.

Metoda Update obsługuje scenariusze, w których DataSet zawiera wiele DataTable obiektów, których nazwy różnią się tylko wielkością liter. Jeśli w DataSetistnieje wiele tabel o tej samej nazwie, ale różne przypadki, Update wykonuje porównanie z uwzględnieniem wielkości liter, aby znaleźć odpowiednią tabelę, i generuje wyjątek, jeśli nie istnieje dokładne dopasowanie. Poniższy kod w języku C# ilustruje to zachowanie.

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.

Jeśli Update jest wywoływana DataSet , a zawiera tylko jedną DataTable , której nazwa różni się tylko wielkością liter, DataTable jest to aktualizowane. W tym scenariuszu porównanie nie uwzględnia wielkości liter. Poniższy kod w języku C# ilustruje to zachowanie.

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.

Metoda Update pobiera wiersze z tabeli wymienionej w pierwszym mapowaniu przed wykonaniem aktualizacji. Następnie Update odświeża wiersz przy użyciu wartości UpdatedRowSource właściwości . Wszystkie zwracane dodatkowe wiersze są ignorowane.

Po załadowaniu DataSetOnRowUpdated wszystkich danych z powrotem do zdarzenia jest wywoływane, co umożliwia użytkownikowi sprawdzenie uzgadnianego DataSet wiersza i wszystkich parametrów wyjściowych zwróconych przez polecenie . Po pomyślnym zaktualizowaniu wiersza zmiany w tym wierszu zostaną zaakceptowane.

W przypadku używania polecenia Updatekolejność wykonywania jest następująca:

  1. Wartości w elemecie DataRow są przenoszone do wartości parametrów.

  2. Zdarzenie OnRowUpdating jest zgłaszane.

  3. Polecenie jest wykonywane.

  4. Jeśli polecenie jest ustawione na FirstReturnedRecordwartość , pierwszy zwrócony wynik zostanie umieszczony w elemecie DataRow.

  5. Jeśli istnieją parametry wyjściowe, są one umieszczane w pliku DataRow.

  6. Zdarzenie OnRowUpdated jest zgłaszane.

  7. AcceptChanges jest wywoływane.

Każde polecenie skojarzone z obiektem DbDataAdapter zwykle ma skojarzona kolekcja parametrów. Parametry są mapowane na bieżący wiersz za pomocą SourceColumn właściwości i SourceVersion klasy dostawcy Parameter danych programu .NET Framework. SourceColumn odwołuje się do kolumny, do DataTable których DbDataAdapter odwołuje się do uzyskiwania wartości parametrów dla bieżącego wiersza.

SourceColumn odwołuje się do niezamapowanej nazwy kolumny przed zastosowaniem mapowań tabeli. Jeśli SourceColumn odwołuje się do nieistniejących kolumn, podjęta akcja zależy od jednej z następujących MissingMappingAction wartości.

Wartość wyliczenia Podjęto akcję
MissingMappingAction.Passthrough Użyj nazw kolumn źródłowych i nazw tabel w tabeli DataSet , jeśli nie ma mapowania.
MissingMappingAction.Ignore Zostanie wygenerowana wartość A SystemException . Gdy mapowania są jawnie ustawione, brakujące mapowanie parametru wejściowego jest zwykle wynikiem błędu.
MissingMappingAction.Error Zostanie wygenerowana wartość A SystemException .

Właściwość SourceColumn jest również używana do mapowania wartości parametrów wyjściowych lub wejściowych/wyjściowych DataSetz powrotem na wartość . Wyjątek jest generowany, jeśli odwołuje się do nieistnienej kolumny.

Właściwość SourceVersion dostawcy danych platformy .NET Framework Parameter określa, czy należy użyć wartości kolumny Oryginalna, Bieżąca lub Proponowana. Ta funkcja jest często używana do uwzględnienia oryginalnych wartości w klauzuli WHERE instrukcji UPDATE w celu sprawdzenia pod kątem optymistycznych naruszeń współbieżności.

Note

Jeśli podczas aktualizowania wiersza wystąpi błąd, zgłaszany jest wyjątek, a wykonanie aktualizacji nie zostanie zakończone. Aby kontynuować operację aktualizacji bez generowania wyjątków w przypadku wystąpienia błędu, ustaw ContinueUpdateOnError właściwość na wartość true przed wywołaniem metody Update. Możesz również reagować na błędy dla poszczególnych wierszy w RowUpdated ramach zdarzenia dataAdapter. Aby kontynuować operację aktualizacji bez generowania wyjątku w zdarzeniu RowUpdated , ustaw Status właściwość elementu RowUpdatedEventArgs na Continue.

Zobacz też

Dotyczy

Update(DataRow[], DataTableMapping)

Źródło:
DbDataAdapter.cs
Źródło:
DbDataAdapter.cs
Źródło:
DbDataAdapter.cs
Źródło:
DbDataAdapter.cs
Źródło:
DbDataAdapter.cs

Aktualizuje wartości w bazie danych, wykonując odpowiednie instrukcje INSERT, UPDATE lub DELETE dla każdego wstawionego, zaktualizowanego lub usuniętego DataRow wiersza w określonej tablicy obiektów.

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

Parametry

dataRows
DataRow[]

Tablica obiektów DataRow używanych do aktualizowania źródła danych.

tableMapping
DataTableMapping

Kolekcja TableMappings do użycia.

Zwraca

Liczba wierszy pomyślnie zaktualizowanych z tablicy obiektów DataRow.

Atrybuty

Wyjątki

Element DataSet jest nieprawidłowy.

Tabela źródłowa jest nieprawidłowa.

Nie istnieje DataRow aktualizacji.

— lub —

Nie istnieje DataTable aktualizacji.

— lub —

Nie istnieje DataSet do użycia jako źródło.

Próba wykonania instrukcji INSERT, UPDATE lub DELETE spowodowała zero rekordów, których dotyczy problem.

Uwagi

Gdy aplikacja wywołuje Update metodę, DbDataAdapter funkcja sprawdza RowState właściwość i wykonuje wymagane instrukcje INSERT, UPDATE lub DELETE iteracyjne dla każdego wiersza na podstawie kolejności indeksów skonfigurowanych w obiekcie DataSet. Na przykład Update może wykonać instrukcję DELETE, a następnie instrukcję INSERT, a następnie inną instrukcję DELETE ze względu na kolejność wierszy w DataTableobiekcie .

Należy zauważyć, że te instrukcje nie są wykonywane jako proces wsadowy; każdy wiersz jest aktualizowany indywidualnie. Aplikacja może wywołać metodę GetChanges w sytuacjach, w których należy kontrolować sekwencję typów instrukcji (na przykład INSERTs przed upDATEs). Aby uzyskać więcej informacji, zobacz Aktualizowanie źródeł danych za pomocą elementów DataAdapters.

Jeśli instrukcje INSERT, UPDATE lub DELETE nie zostały określone, Update metoda generuje wyjątek. Można jednak utworzyć SqlCommandBuilder obiekt lub OleDbCommandBuilder w celu automatycznego generowania instrukcji SQL dla aktualizacji z jedną tabelą, jeśli ustawisz SelectCommand właściwość dostawcy danych programu .NET Framework. Następnie wszystkie dodatkowe instrukcje SQL, które nie zostały ustawione, są generowane przez narzędzie CommandBuilder. Ta logika generowania wymaga obecności informacji o kolumnie klucza w obiekcie DataSet. Aby uzyskać więcej informacji, zobacz Generowanie poleceń za pomocą poleceń CommandBuilders.

Metoda Update pobiera wiersze z tabeli wymienionej w pierwszym mapowaniu przed wykonaniem aktualizacji. Następnie Update odświeża wiersz przy użyciu wartości UpdatedRowSource właściwości . Wszystkie zwracane dodatkowe wiersze są ignorowane.

Po załadowaniu DataSetOnRowUpdated wszystkich danych z powrotem do zdarzenia jest wywoływane, co umożliwia użytkownikowi sprawdzenie uzgadnianego DataSet wiersza i wszystkich parametrów wyjściowych zwróconych przez polecenie . Po pomyślnym zaktualizowaniu wiersza zmiany w tym wierszu zostaną zaakceptowane.

W przypadku używania polecenia Updatekolejność wykonywania jest następująca:

  1. Wartości w elemecie DataRow są przenoszone do wartości parametrów.

  2. Zdarzenie OnRowUpdating jest zgłaszane.

  3. Polecenie jest wykonywane.

  4. Jeśli polecenie jest ustawione na FirstReturnedRecordwartość , pierwszy zwrócony wynik zostanie umieszczony w elemecie DataRow.

  5. Jeśli istnieją parametry wyjściowe, są one umieszczane w pliku DataRow.

  6. Zdarzenie OnRowUpdated jest zgłaszane.

  7. AcceptChanges jest wywoływane.

Każde polecenie skojarzone z obiektem DbDataAdapter zwykle ma skojarzona kolekcja parametrów. Parametry są mapowane na bieżący wiersz za pomocą SourceColumn właściwości i SourceVersion klasy dostawcy Parameter danych programu .NET Framework. SourceColumn odwołuje się do kolumny, do DataTable których DbDataAdapter odwołuje się do uzyskiwania wartości parametrów dla bieżącego wiersza.

SourceColumn odwołuje się do niezamapowanej nazwy kolumny przed zastosowaniem mapowań tabeli. Jeśli SourceColumn odwołuje się do nieistniejących kolumn, podjęta akcja zależy od jednej z następujących MissingMappingAction wartości.

Wartość wyliczenia Podjęto akcję
MissingMappingAction.Passthrough Użyj nazw kolumn źródłowych i nazw tabel w tabeli DataSet , jeśli nie ma mapowania.
MissingMappingAction.Ignore Zostanie wygenerowana wartość A SystemException . Gdy mapowania są jawnie ustawione, brakujące mapowanie parametru wejściowego jest zwykle wynikiem błędu.
MissingMappingAction.Error Zostanie wygenerowana wartość A SystemException .

Właściwość SourceColumn jest również używana do mapowania wartości parametrów wyjściowych lub wejściowych/wyjściowych DataSetz powrotem na wartość . Wyjątek jest generowany, jeśli odwołuje się do nieistnienej kolumny.

Właściwość SourceVersion dostawcy danych platformy .NET Framework Parameter określa, czy należy użyć wartości kolumny Oryginalna, Bieżąca lub Proponowana. Ta funkcja jest często używana do uwzględnienia oryginalnych wartości w klauzuli WHERE instrukcji UPDATE w celu sprawdzenia pod kątem optymistycznych naruszeń współbieżności.

Note

Jeśli podczas aktualizowania wiersza wystąpi błąd, zgłaszany jest wyjątek, a wykonanie aktualizacji nie zostanie zakończone. Aby kontynuować operację aktualizacji bez generowania wyjątków w przypadku wystąpienia błędu, ustaw ContinueUpdateOnError właściwość na wartość true przed wywołaniem metody Update. Możesz również reagować na błędy dla poszczególnych wierszy w RowUpdated ramach zdarzenia dataAdapter. Aby kontynuować operację aktualizacji bez generowania wyjątku w zdarzeniu RowUpdated , ustaw Status właściwość elementu RowUpdatedEventArgs na Continue.

Zobacz też

Dotyczy

Update(DataTable)

Źródło:
DbDataAdapter.cs
Źródło:
DbDataAdapter.cs
Źródło:
DbDataAdapter.cs
Źródło:
DbDataAdapter.cs
Źródło:
DbDataAdapter.cs

Aktualizuje wartości w bazie danych, wykonując odpowiednie instrukcje INSERT, UPDATE lub DELETE dla każdego wstawionego, zaktualizowanego lub usuniętego wiersza w określonym DataTablewierszu .

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

Parametry

dataTable
DataTable

Element DataTable używany do aktualizowania źródła danych.

Zwraca

Liczba wierszy pomyślnie zaktualizowanych z elementu DataTable.

Atrybuty

Wyjątki

Element DataSet jest nieprawidłowy.

Tabela źródłowa jest nieprawidłowa.

Nie istnieje DataRow aktualizacji.

— lub —

Nie istnieje DataTable aktualizacji.

— lub —

Nie istnieje DataSet do użycia jako źródło.

Próba wykonania instrukcji INSERT, UPDATE lub DELETE spowodowała zero rekordów, których dotyczy problem.

Przykłady

W poniższym przykładzie użyto klasy pochodnej OleDbDataAdapter, aby zaktualizować źródło danych.

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

Uwagi

Gdy aplikacja wywołuje Update metodę, DbDataAdapter funkcja sprawdza RowState właściwość i wykonuje wymagane instrukcje INSERT, UPDATE lub DELETE iteracyjne dla każdego wiersza na podstawie kolejności indeksów skonfigurowanych w obiekcie DataSet. Na przykład Update może wykonać instrukcję DELETE, a następnie instrukcję INSERT, a następnie inną instrukcję DELETE ze względu na kolejność wierszy w DataTableobiekcie .

Należy zauważyć, że te instrukcje nie są wykonywane jako proces wsadowy; każdy wiersz jest aktualizowany indywidualnie. Aplikacja może wywołać metodę GetChanges w sytuacjach, w których należy kontrolować sekwencję typów instrukcji (na przykład INSERTs przed upDATEs). Aby uzyskać więcej informacji, zobacz Aktualizowanie źródeł danych za pomocą elementów DataAdapters.

Jeśli instrukcje INSERT, UPDATE lub DELETE nie zostały określone, Update metoda generuje wyjątek. Można jednak utworzyć SqlCommandBuilder obiekt lub OleDbCommandBuilder w celu automatycznego generowania instrukcji SQL dla aktualizacji z jedną tabelą, jeśli ustawisz SelectCommand właściwość dostawcy danych programu .NET Framework. Następnie wszystkie dodatkowe instrukcje SQL, które nie zostały ustawione, są generowane przez narzędzie CommandBuilder. Ta logika generowania wymaga obecności informacji o kolumnie klucza w obiekcie DataSet. Aby uzyskać więcej informacji, zobacz Generowanie poleceń za pomocą poleceń CommandBuilders.

Metoda Update pobiera wiersze z tabeli wymienionej w pierwszym mapowaniu przed wykonaniem aktualizacji. Następnie Update odświeża wiersz przy użyciu wartości UpdatedRowSource właściwości . Wszystkie zwracane dodatkowe wiersze są ignorowane.

Po załadowaniu DataSetOnRowUpdated wszystkich danych z powrotem do zdarzenia jest wywoływane, co umożliwia użytkownikowi sprawdzenie uzgadnianego DataSet wiersza i wszystkich parametrów wyjściowych zwróconych przez polecenie . Po pomyślnym zaktualizowaniu wiersza zmiany w tym wierszu zostaną zaakceptowane.

W przypadku używania polecenia Updatekolejność wykonywania jest następująca:

  1. Wartości w elemecie DataRow są przenoszone do wartości parametrów.

  2. Zdarzenie OnRowUpdating jest zgłaszane.

  3. Polecenie jest wykonywane.

  4. Jeśli polecenie jest ustawione na FirstReturnedRecordwartość , pierwszy zwrócony wynik zostanie umieszczony w elemecie DataRow.

  5. Jeśli istnieją parametry wyjściowe, są one umieszczane w pliku DataRow.

  6. Zdarzenie OnRowUpdated jest zgłaszane.

  7. AcceptChanges jest wywoływane.

Każde polecenie skojarzone z obiektem DbDataAdapter zwykle ma skojarzona kolekcja parametrów. Parametry są mapowane na bieżący wiersz za pomocą SourceColumn właściwości i SourceVersion klasy dostawcy Parameter danych programu .NET Framework. SourceColumn odwołuje się do kolumny, do DataTable których DbDataAdapter odwołuje się do uzyskiwania wartości parametrów dla bieżącego wiersza.

SourceColumn odwołuje się do niezamapowanej nazwy kolumny przed zastosowaniem mapowań tabeli. Jeśli SourceColumn odwołuje się do nieistniejących kolumn, podjęta akcja zależy od jednej z następujących MissingMappingAction wartości.

Wartość wyliczenia Podjęto akcję
MissingMappingAction.Passthrough Użyj nazw kolumn źródłowych i nazw tabel w tabeli DataSet , jeśli nie ma mapowania.
MissingMappingAction.Ignore Zostanie wygenerowana wartość A SystemException . Gdy mapowania są jawnie ustawione, brakujące mapowanie parametru wejściowego jest zwykle wynikiem błędu.
MissingMappingAction.Error Zostanie wygenerowana wartość A SystemException .

Właściwość SourceColumn jest również używana do mapowania wartości parametrów wyjściowych lub wejściowych/wyjściowych DataSetz powrotem na wartość . Wyjątek jest generowany, jeśli odwołuje się do nieistnienej kolumny.

Właściwość SourceVersion dostawcy danych platformy .NET Framework Parameter określa, czy należy użyć wartości kolumny Oryginalna, Bieżąca lub Proponowana. Ta funkcja jest często używana do uwzględnienia oryginalnych wartości w klauzuli WHERE instrukcji UPDATE w celu sprawdzenia pod kątem optymistycznych naruszeń współbieżności.

Note

Jeśli podczas aktualizowania wiersza wystąpi błąd, zgłaszany jest wyjątek, a wykonanie aktualizacji nie zostanie zakończone. Aby kontynuować operację aktualizacji bez generowania wyjątków w przypadku wystąpienia błędu, ustaw ContinueUpdateOnError właściwość na wartość true przed wywołaniem metody Update. Możesz również reagować na błędy dla poszczególnych wierszy w RowUpdated ramach zdarzenia dataAdapter. Aby kontynuować operację aktualizacji bez generowania wyjątku w zdarzeniu RowUpdated , ustaw Status właściwość elementu RowUpdatedEventArgs na Continue.

Zobacz też

Dotyczy

Update(DataSet)

Źródło:
DbDataAdapter.cs
Źródło:
DbDataAdapter.cs
Źródło:
DbDataAdapter.cs
Źródło:
DbDataAdapter.cs
Źródło:
DbDataAdapter.cs

Aktualizuje wartości w bazie danych, wykonując odpowiednie instrukcje INSERT, UPDATE lub DELETE dla każdego wstawionego, zaktualizowanego lub usuniętego wiersza w określonym DataSetwierszu .

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

Parametry

dataSet
DataSet

Element DataSet używany do aktualizowania źródła danych.

Zwraca

Liczba wierszy pomyślnie zaktualizowanych z elementu DataSet.

Implementuje

Atrybuty

Wyjątki

Tabela źródłowa jest nieprawidłowa.

Próba wykonania instrukcji INSERT, UPDATE lub DELETE spowodowała zero rekordów, których dotyczy problem.

Przykłady

W poniższym przykładzie użyto klasy pochodnej OleDbDataAdapter, aby zaktualizować źródło danych.

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

Uwagi

Gdy aplikacja wywołuje Update metodę, DbDataAdapter funkcja sprawdza RowState właściwość i wykonuje wymagane instrukcje INSERT, UPDATE lub DELETE iteracyjne dla każdego wiersza na podstawie kolejności indeksów skonfigurowanych w obiekcie DataSet. Na przykład Update może wykonać instrukcję DELETE, a następnie instrukcję INSERT, a następnie inną instrukcję DELETE ze względu na kolejność wierszy w DataTableobiekcie .

Należy zauważyć, że te instrukcje nie są wykonywane jako proces wsadowy; każdy wiersz jest aktualizowany indywidualnie. Aplikacja może wywołać metodę GetChanges w sytuacjach, w których należy kontrolować sekwencję typów instrukcji (na przykład INSERTs przed upDATEs). Aby uzyskać więcej informacji, zobacz Aktualizowanie źródeł danych za pomocą elementów DataAdapters.

Jeśli instrukcje INSERT, UPDATE lub DELETE nie zostały określone, Update metoda generuje wyjątek. Można jednak utworzyć SqlCommandBuilder obiekt lub OleDbCommandBuilder w celu automatycznego generowania instrukcji SQL dla aktualizacji z jedną tabelą, jeśli ustawisz SelectCommand właściwość dostawcy danych programu .NET Framework. Następnie wszystkie dodatkowe instrukcje SQL, które nie zostały ustawione, są generowane przez narzędzie CommandBuilder. Ta logika generowania wymaga obecności informacji o kolumnie klucza w obiekcie DataSet. Aby uzyskać więcej informacji, zobacz Generowanie poleceń za pomocą poleceń CommandBuilders.

Metoda Update pobiera wiersze z tabeli wymienionej w pierwszym mapowaniu przed wykonaniem aktualizacji. Następnie Update odświeża wiersz przy użyciu wartości UpdatedRowSource właściwości . Wszystkie zwracane dodatkowe wiersze są ignorowane.

Po załadowaniu DataSetOnRowUpdated wszystkich danych z powrotem do zdarzenia jest wywoływane, co umożliwia użytkownikowi sprawdzenie uzgadnianego DataSet wiersza i wszystkich parametrów wyjściowych zwróconych przez polecenie . Po pomyślnym zaktualizowaniu wiersza zmiany w tym wierszu zostaną zaakceptowane.

W przypadku używania polecenia Updatekolejność wykonywania jest następująca:

  1. Wartości w elemecie DataRow są przenoszone do wartości parametrów.

  2. Zdarzenie OnRowUpdating jest zgłaszane.

  3. Polecenie jest wykonywane.

  4. Jeśli polecenie jest ustawione na FirstReturnedRecordwartość , pierwszy zwrócony wynik zostanie umieszczony w elemecie DataRow.

  5. Jeśli istnieją parametry wyjściowe, są one umieszczane w pliku DataRow.

  6. Zdarzenie OnRowUpdated jest zgłaszane.

  7. AcceptChanges jest wywoływane.

Każde polecenie skojarzone z obiektem DbDataAdapter zwykle ma skojarzona kolekcja parametrów. Parametry są mapowane na bieżący wiersz za pomocą SourceColumn właściwości i SourceVersion klasy dostawcy Parameter danych programu .NET Framework. SourceColumn odwołuje się do kolumny, do DataTable których DbDataAdapter odwołuje się do uzyskiwania wartości parametrów dla bieżącego wiersza.

SourceColumn odwołuje się do niezamapowanej nazwy kolumny przed zastosowaniem mapowań tabeli. Jeśli SourceColumn odwołuje się do nieistniejących kolumn, podjęta akcja zależy od jednej z następujących MissingMappingAction wartości.

Wartość wyliczenia Podjęto akcję
MissingMappingAction.Passthrough Użyj nazw kolumn źródłowych i nazw tabel w tabeli DataSet , jeśli nie ma mapowania.
MissingMappingAction.Ignore Zostanie wygenerowana wartość A SystemException . Gdy mapowania są jawnie ustawione, brakujące mapowanie parametru wejściowego jest zwykle wynikiem błędu.
MissingMappingAction.Error Zostanie wygenerowana wartość A SystemException .

Właściwość SourceColumn jest również używana do mapowania wartości parametrów wyjściowych lub wejściowych/wyjściowych DataSetz powrotem na wartość . Wyjątek jest generowany, jeśli odwołuje się do nieistnienej kolumny.

Właściwość SourceVersion dostawcy danych platformy .NET Framework Parameter określa, czy należy użyć wartości kolumny Oryginalna, Bieżąca lub Proponowana. Ta funkcja jest często używana do uwzględnienia oryginalnych wartości w klauzuli WHERE instrukcji UPDATE w celu sprawdzenia pod kątem optymistycznych naruszeń współbieżności.

Note

Jeśli podczas aktualizowania wiersza wystąpi błąd, zgłaszany jest wyjątek, a wykonanie aktualizacji nie zostanie zakończone. Aby kontynuować operację aktualizacji bez generowania wyjątków w przypadku wystąpienia błędu, ustaw ContinueUpdateOnError właściwość na wartość true przed wywołaniem metody Update. Możesz również reagować na błędy dla poszczególnych wierszy w RowUpdated ramach zdarzenia dataAdapter. Aby kontynuować operację aktualizacji bez generowania wyjątku w zdarzeniu RowUpdated , ustaw Status właściwość elementu RowUpdatedEventArgs na Continue.

Zobacz też

Dotyczy

Update(DataRow[])

Źródło:
DbDataAdapter.cs
Źródło:
DbDataAdapter.cs
Źródło:
DbDataAdapter.cs
Źródło:
DbDataAdapter.cs
Źródło:
DbDataAdapter.cs

Aktualizuje wartości w bazie danych, wykonując odpowiednie instrukcje INSERT, UPDATE lub DELETE dla każdego wstawionego, zaktualizowanego lub usuniętego wiersza w określonej tablicy w DataSetobiekcie .

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

Parametry

dataRows
DataRow[]

Tablica obiektów DataRow używanych do aktualizowania źródła danych.

Zwraca

Liczba wierszy pomyślnie zaktualizowanych z elementu DataSet.

Atrybuty

Wyjątki

Element DataSet jest nieprawidłowy.

Tabela źródłowa jest nieprawidłowa.

Nie istnieje DataRow aktualizacji.

— lub —

Nie istnieje DataTable aktualizacji.

— lub —

Nie istnieje DataSet do użycia jako źródło.

Próba wykonania instrukcji INSERT, UPDATE lub DELETE spowodowała zero rekordów, których dotyczy problem.

Przykłady

W poniższym przykładzie użyto klasy pochodnej OleDbDataAdapter, aby zaktualizować źródło danych.

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

Uwagi

Gdy aplikacja wywołuje Update metodę, DbDataAdapter funkcja sprawdza RowState właściwość i wykonuje wymagane instrukcje INSERT, UPDATE lub DELETE iteracyjne dla każdego wiersza na podstawie kolejności indeksów skonfigurowanych w obiekcie DataSet. Na przykład Update może wykonać instrukcję DELETE, a następnie instrukcję INSERT, a następnie inną instrukcję DELETE ze względu na kolejność wierszy w DataTableobiekcie .

Należy zauważyć, że te instrukcje nie są wykonywane jako proces wsadowy; każdy wiersz jest aktualizowany indywidualnie. Aplikacja może wywołać metodę GetChanges w sytuacjach, w których należy kontrolować sekwencję typów instrukcji (na przykład INSERTs przed upDATEs). Aby uzyskać więcej informacji, zobacz Aktualizowanie źródeł danych za pomocą elementów DataAdapters.

Jeśli instrukcje INSERT, UPDATE lub DELETE nie zostały określone, Update metoda generuje wyjątek. Można jednak utworzyć SqlCommandBuilder obiekt lub OleDbCommandBuilder w celu automatycznego generowania instrukcji SQL dla aktualizacji z jedną tabelą, jeśli ustawisz SelectCommand właściwość dostawcy danych programu .NET Framework. Następnie wszystkie dodatkowe instrukcje SQL, które nie zostały ustawione, są generowane przez narzędzie CommandBuilder. Ta logika generowania wymaga obecności informacji o kolumnie klucza w obiekcie DataSet. Aby uzyskać więcej informacji, zobacz Generowanie poleceń za pomocą poleceń CommandBuilders.

Metoda Update pobiera wiersze z tabeli wymienionej w pierwszym mapowaniu przed wykonaniem aktualizacji. Następnie Update odświeża wiersz przy użyciu wartości UpdatedRowSource właściwości . Wszystkie zwracane dodatkowe wiersze są ignorowane.

Po załadowaniu DataSetOnRowUpdated wszystkich danych z powrotem do zdarzenia jest wywoływane, co umożliwia użytkownikowi sprawdzenie uzgadnianego DataSet wiersza i wszystkich parametrów wyjściowych zwróconych przez polecenie . Po pomyślnym zaktualizowaniu wiersza zmiany w tym wierszu zostaną zaakceptowane.

W przypadku używania polecenia Updatekolejność wykonywania jest następująca:

  1. Wartości w elemecie DataRow są przenoszone do wartości parametrów.

  2. Zdarzenie OnRowUpdating jest zgłaszane.

  3. Polecenie jest wykonywane.

  4. Jeśli polecenie jest ustawione na FirstReturnedRecord, pierwszy zwrócony wynik zostanie umieszczony w DataRow.

  5. Jeśli istnieją parametry wyjściowe, są one umieszczane w pliku DataRow.

  6. Zdarzenie OnRowUpdated jest zgłaszane.

  7. AcceptChanges jest wywoływane.

Każde polecenie skojarzone z obiektem DbDataAdapter zwykle ma skojarzona kolekcja parametrów. Parametry są mapowane na bieżący wiersz za pomocą SourceColumn właściwości i SourceVersion klasy dostawcy Parameter danych programu .NET Framework. SourceColumn odwołuje się do kolumny, do DataTable których DbDataAdapter odwołuje się do uzyskiwania wartości parametrów dla bieżącego wiersza.

SourceColumn odwołuje się do niezamapowanej nazwy kolumny przed zastosowaniem mapowań tabeli. Jeśli SourceColumn odwołuje się do nieistniejących kolumn, podjęta akcja zależy od jednej z następujących MissingMappingAction wartości.

Wartość wyliczenia Podjęto akcję
MissingMappingAction.Passthrough Użyj nazw kolumn źródłowych i nazw tabel w tabeli DataSet , jeśli nie ma mapowania.
MissingMappingAction.Ignore Zostanie wygenerowana wartość A SystemException . Gdy mapowania są jawnie ustawione, brakujące mapowanie parametru wejściowego jest zwykle wynikiem błędu.
MissingMappingAction.Error Zostanie wygenerowana wartość A SystemException .

Właściwość SourceColumn jest również używana do mapowania wartości parametrów wyjściowych lub wejściowych/wyjściowych DataSetz powrotem na wartość . Wyjątek jest generowany, jeśli odwołuje się do nieistnienej kolumny.

Właściwość SourceVersion dostawcy danych platformy .NET Framework Parameter określa, czy należy użyć wartości kolumny Oryginalna, Bieżąca lub Proponowana. Ta funkcja jest często używana do uwzględnienia oryginalnych wartości w klauzuli WHERE instrukcji UPDATE w celu sprawdzenia pod kątem optymistycznych naruszeń współbieżności.

Note

Jeśli podczas aktualizowania wiersza wystąpi błąd, zgłaszany jest wyjątek, a wykonanie aktualizacji nie zostanie zakończone. Aby kontynuować operację aktualizacji bez generowania wyjątków w przypadku wystąpienia błędu, ustaw ContinueUpdateOnError właściwość na wartość true przed wywołaniem metody Update. Możesz również reagować na błędy dla poszczególnych wierszy w RowUpdated ramach zdarzenia dataAdapter. Aby kontynuować operację aktualizacji bez generowania wyjątku w zdarzeniu RowUpdated , ustaw Status właściwość elementu RowUpdatedEventArgs na Continue.

Zobacz też

Dotyczy