DbDataAdapter.Update Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Aktualizacje wartości w bazie danych, wykonując odpowiednie instrukcje INSERT, UPDATE lub DELETE dla każdego wstawionego, zaktualizowanego lub usuniętego DataSetwiersza w pliku .
Przeciążenia
Update(DataSet, String) |
Aktualizacje 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) |
Aktualizacje 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) |
Aktualizacje 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) |
Aktualizacje 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[]) |
Aktualizacje 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
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
Parametry
- srcTable
- String
Nazwa tabeli źródłowej, która ma być używana do mapowania tabel.
Zwraca
Liczba wierszy została pomyślnie zaktualizowana z elementu DataSet.
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 , OleDbDataAdapteraby 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 metodę Update , DbDataAdapter metoda 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 elemecie 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 lubOleDbCommandBuilder, aby automatycznie wygenerować instrukcje SQL dla aktualizacji pojedynczej tabeli, jeśli ustawisz SelectCommand
właściwość dostawcy danych .NET Framework. Następnie wszystkie dodatkowe instrukcje SQL, które nie zostały ustawione, są generowane przez program CommandBuilder. Ta logika generowania wymaga, aby informacje o kolumnie klucza znajdują się w elemecie 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 wiele tabel o tej samej nazwie, ale inny przypadek, istnieje w elemecie DataSet
, Update wykonuje porównanie uwzględniające wielkość 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 i zawiera tylko jeden DataTable , którego nazwa różni się tylko wielkością liter, jest to DataTable aktualizowane. W tym scenariuszu porównanie jest bez uwzględniania 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 danych z powrotem do elementu zdarzenie zostanie podniesione, 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:
Wartości w elemecie DataRow są przenoszone do wartości parametrów.
Zdarzenie OnRowUpdating jest zgłaszane.
Polecenie jest wykonywane.
Jeśli polecenie jest ustawione na
FirstReturnedRecord
wartość , pierwszy zwrócony wynik zostanie umieszczony w elemecie DataRow.Jeśli istnieją parametry wyjściowe, są one umieszczane w elemecie DataRow.
Zdarzenie OnRowUpdated jest zgłaszane.
Wywołano metodę AcceptChanges.
Każde polecenie skojarzone z elementem DbDataAdapter zwykle ma skojarzona z nim kolekcję parametrów. Parametry są mapowane na bieżący wiersz za pomocą SourceColumn
właściwości i SourceVersion
klasy dostawcy Parameter
danych .NET Framework. SourceColumn
Odwołuje się do DataTable kolumny, DbDataAdapter do którego 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 |
Wartość A SystemException jest generowana. Gdy mapowania są jawnie ustawione, brakujące mapowanie parametru wejściowego jest zwykle wynikiem błędu. |
MissingMappingAction.Error |
Wartość A SystemException jest generowana. |
Właściwość SourceColumn
jest również używana do mapowania wartości parametrów wyjściowych lub wejściowych/wyjściowych z powrotem na DataSet
wartość . Wyjątek jest generowany, jeśli odwołuje się do nieistnienej kolumny.
Właściwość SourceVersion
klasy dostawcy Parameter
danych .NET Framework określa, czy należy użyć oryginalnej, bieżącej lub proponowanej wersji wartości kolumny. 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.
Uwaga
Jeśli podczas aktualizowania wiersza wystąpi błąd, zgłaszany jest wyjątek, a wykonanie aktualizacji zostanie przerwane. Aby kontynuować operację aktualizacji bez generowania wyjątków po napotkaniu 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
przypadku 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
Aktualizacje 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);
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
Parametry
- tableMapping
- DataTableMapping
Kolekcja TableMappings do użycia.
Zwraca
Liczba wierszy, które zostały pomyślnie zaktualizowane z tablicy DataRow obiektów.
Wyjątki
Element DataSet jest nieprawidłowy.
Tabela źródłowa jest nieprawidłowa.
Nie DataRow istnieje do zaktualizowania.
-lub-
Nie DataTable istnieje do zaktualizowania.
-lub-
Nie DataSet istnieje 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 metodę Update , DbDataAdapter metoda 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 elemecie 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 lubOleDbCommandBuilder, aby automatycznie wygenerować instrukcje SQL dla aktualizacji pojedynczej tabeli, jeśli ustawisz SelectCommand
właściwość dostawcy danych .NET Framework. Następnie wszystkie dodatkowe instrukcje SQL, które nie zostały ustawione, są generowane przez program CommandBuilder. Ta logika generowania wymaga, aby informacje o kolumnie klucza znajdują się w elemecie 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 danych z powrotem do elementu zdarzenie zostanie podniesione, 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:
Wartości w elemecie DataRow są przenoszone do wartości parametrów.
Zdarzenie OnRowUpdating jest zgłaszane.
Polecenie jest wykonywane.
Jeśli polecenie jest ustawione na
FirstReturnedRecord
wartość , pierwszy zwrócony wynik zostanie umieszczony w elemecie DataRow.Jeśli istnieją parametry wyjściowe, są one umieszczane w elemecie DataRow.
Zdarzenie OnRowUpdated jest zgłaszane.
Wywołano metodę AcceptChanges.
Z każdym poleceniem skojarzonym z elementem DbDataAdapter zwykle jest skojarzona kolekcja parametrów. Parametry są mapowane na bieżący wiersz za pomocą SourceColumn
właściwości i SourceVersion
klasy dostawcy Parameter
danych .NET Framework. SourceColumn
odwołuje się do DataTable kolumny, DbDataAdapter do których odwołuje się do uzyskiwania wartości parametrów dla bieżącego wiersza.
SourceColumn
odwołuje się do nazwy niezamapowanej 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 żadnego mapowania. |
MissingMappingAction.Ignore |
Wartość A SystemException jest generowana. Po jawnym ustawieniu mapowań brakujące mapowanie parametru wejściowego jest zwykle wynikiem błędu. |
MissingMappingAction.Error |
Wartość A SystemException jest generowana. |
Właściwość SourceColumn
jest również używana do mapowania wartości parametrów wyjściowych lub wejściowych/wyjściowych z DataSet
powrotem na wartość . Wyjątek jest generowany, jeśli odwołuje się do nieistnienej kolumny.
Właściwość SourceVersion
klasy dostawcy Parameter
danych .NET Framework określa, czy należy użyć oryginalnej, bieżącej lub proponowanej wersji wartości kolumny. Ta funkcja jest często używana do uwzględniania oryginalnych wartości w klauzuli WHERE instrukcji UPDATE w celu sprawdzenia, czy nie ma optymistycznych naruszeń współbieżności.
Uwaga
Jeśli podczas aktualizowania wiersza wystąpi błąd, zgłaszany jest wyjątek, a wykonanie aktualizacji zostanie przerwane. Aby kontynuować operację aktualizacji bez generowania wyjątków po napotkaniu 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 ramach RowUpdated
zdarzenia elementu DataAdapter. Aby kontynuować operację aktualizacji bez generowania wyjątku w ramach RowUpdated
zdarzenia, ustaw Status właściwość właściwości RowUpdatedEventArgs na Continue.
Zobacz też
Dotyczy
Update(DataTable)
- Źródło:
- DbDataAdapter.cs
- Źródło:
- DbDataAdapter.cs
- Źródło:
- DbDataAdapter.cs
Aktualizacje 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);
public int Update (System.Data.DataTable dataTable);
override this.Update : System.Data.DataTable -> int
Public Function Update (dataTable As DataTable) As Integer
Parametry
Zwraca
Liczba wierszy, które zostały pomyślnie zaktualizowane z pliku DataTable.
Wyjątki
Element DataSet jest nieprawidłowy.
Tabela źródłowa jest nieprawidłowa.
Nie DataRow istnieje do zaktualizowania.
-lub-
Nie DataTable istnieje do zaktualizowania.
-lub-
Nie DataSet istnieje 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 , OleDbDataAdapterw celu zaktualizowania źródła 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 metodę Update , DbDataAdapter metoda sprawdza RowState właściwość i wykonuje wymagane instrukcje INSERT, UPDATE lub DELETE iteracyjnie 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 .NET Framework. Następnie wszystkie dodatkowe instrukcje SQL, które nie zostały ustawione, są generowane przez commandbuilder. Ta logika generowania wymaga obecności informacji o kolumnie klucza w obiekcie DataSet. Aby uzyskać więcej informacji, zobacz Generowanie poleceń za pomocą konstruktorów poleceń.
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 elementu zdarzenie 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 korzystania z polecenia Updatekolejność wykonywania jest następująca:
Wartości w obiekcie DataRow są przenoszone do wartości parametrów.
Zdarzenie OnRowUpdating jest zgłaszane.
Polecenie jest wykonywane.
Jeśli polecenie jest ustawione na
FirstReturnedRecord
wartość , pierwszy zwrócony wynik zostanie umieszczony w elemecie DataRow.Jeśli istnieją parametry wyjściowe, są one umieszczane w elemecie DataRow.
Zdarzenie OnRowUpdated jest zgłaszane.
Wywołano metodę AcceptChanges.
Z każdym poleceniem skojarzonym z elementem DbDataAdapter zwykle jest skojarzona kolekcja parametrów. Parametry są mapowane na bieżący wiersz za pomocą SourceColumn
właściwości i SourceVersion
klasy dostawcy Parameter
danych .NET Framework. SourceColumn
odwołuje się do DataTable kolumny, DbDataAdapter do których odwołuje się do uzyskiwania wartości parametrów dla bieżącego wiersza.
SourceColumn
odwołuje się do nazwy niezamapowanej 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 żadnego mapowania. |
MissingMappingAction.Ignore |
Wartość A SystemException jest generowana. Po jawnym ustawieniu mapowań brakujące mapowanie parametru wejściowego jest zwykle wynikiem błędu. |
MissingMappingAction.Error |
Wartość A SystemException jest generowana. |
Właściwość SourceColumn
jest również używana do mapowania wartości parametrów wyjściowych lub wejściowych/wyjściowych z DataSet
powrotem na wartość . Wyjątek jest generowany, jeśli odwołuje się do nieistnienej kolumny.
Właściwość SourceVersion
klasy dostawcy Parameter
danych .NET Framework określa, czy należy użyć oryginalnej, bieżącej lub proponowanej wersji wartości kolumny. Ta funkcja jest często używana do uwzględniania oryginalnych wartości w klauzuli WHERE instrukcji UPDATE w celu sprawdzenia, czy nie ma optymistycznych naruszeń współbieżności.
Uwaga
Jeśli podczas aktualizowania wiersza wystąpi błąd, zgłaszany jest wyjątek, a wykonanie aktualizacji zostanie przerwane. Aby kontynuować operację aktualizacji bez generowania wyjątków po napotkaniu 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 ramach RowUpdated
zdarzenia elementu DataAdapter. Aby kontynuować operację aktualizacji bez generowania wyjątku w ramach RowUpdated
zdarzenia, ustaw Status właściwość właściwości RowUpdatedEventArgs na Continue.
Zobacz też
Dotyczy
Update(DataSet)
- Źródło:
- DbDataAdapter.cs
- Źródło:
- DbDataAdapter.cs
- Źródło:
- DbDataAdapter.cs
Aktualizacje 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);
public override int Update (System.Data.DataSet dataSet);
override this.Update : System.Data.DataSet -> int
Public Overrides Function Update (dataSet As DataSet) As Integer
Parametry
Zwraca
Liczba wierszy została pomyślnie zaktualizowana z elementu DataSet.
Implementuje
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 , OleDbDataAdapterw celu zaktualizowania źródła 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 metodę Update , DbDataAdapter metoda sprawdza RowState właściwość i wykonuje wymagane instrukcje INSERT, UPDATE lub DELETE iteracyjnie 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 .NET Framework. Następnie wszystkie dodatkowe instrukcje SQL, które nie zostały ustawione, są generowane przez program CommandBuilder. Ta logika generowania wymaga, aby informacje o kolumnie klucza znajdują się w elemecie 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 danych z powrotem do elementu zdarzenie zostanie podniesione, 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:
Wartości w elemecie DataRow są przenoszone do wartości parametrów.
Zdarzenie OnRowUpdating jest zgłaszane.
Polecenie jest wykonywane.
Jeśli polecenie jest ustawione na
FirstReturnedRecord
wartość , pierwszy zwrócony wynik zostanie umieszczony w elemecie DataRow.Jeśli istnieją parametry wyjściowe, są one umieszczane w elemecie DataRow.
Zdarzenie OnRowUpdated jest zgłaszane.
Wywołano metodę AcceptChanges.
Każde polecenie skojarzone z elementem DbDataAdapter zwykle ma skojarzona z nim kolekcję parametrów. Parametry są mapowane na bieżący wiersz za pomocą SourceColumn
właściwości i SourceVersion
klasy dostawcy Parameter
danych .NET Framework. SourceColumn
Odwołuje się do DataTable kolumny, DbDataAdapter do którego 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 |
Wartość A SystemException jest generowana. Gdy mapowania są jawnie ustawione, brakujące mapowanie parametru wejściowego jest zwykle wynikiem błędu. |
MissingMappingAction.Error |
Wartość A SystemException jest generowana. |
Właściwość SourceColumn
jest również używana do mapowania wartości parametrów wyjściowych lub wejściowych/wyjściowych z powrotem na DataSet
wartość . Wyjątek jest generowany, jeśli odwołuje się do nieistnienej kolumny.
Właściwość SourceVersion
klasy dostawcy Parameter
danych .NET Framework określa, czy należy użyć oryginalnej, bieżącej lub proponowanej wersji wartości kolumny. 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.
Uwaga
Jeśli podczas aktualizowania wiersza wystąpi błąd, zgłaszany jest wyjątek, a wykonanie aktualizacji zostanie przerwane. Aby kontynuować operację aktualizacji bez generowania wyjątków po napotkaniu 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
przypadku 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
Aktualizacje 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);
public int Update (System.Data.DataRow[] dataRows);
override this.Update : System.Data.DataRow[] -> int
Public Function Update (dataRows As DataRow()) As Integer
Parametry
Zwraca
Liczba wierszy została pomyślnie zaktualizowana z elementu DataSet.
Wyjątki
Element DataSet jest nieprawidłowy.
Tabela źródłowa jest nieprawidłowa.
Nie DataRow istnieje do zaktualizowania.
-lub-
Nie DataTable istnieje do zaktualizowania.
-lub-
Nie DataSet istnieje 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 , OleDbDataAdapteraby 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 metodę Update , DbDataAdapter metoda 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 elemecie 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 lubOleDbCommandBuilder, aby automatycznie wygenerować instrukcje SQL dla aktualizacji pojedynczej tabeli, jeśli ustawisz SelectCommand
właściwość dostawcy danych .NET Framework. Następnie wszystkie dodatkowe instrukcje SQL, które nie zostały ustawione, są generowane przez program CommandBuilder. Ta logika generowania wymaga, aby informacje o kolumnie klucza znajdują się w elemecie 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 danych z powrotem do elementu zdarzenie zostanie podniesione, 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:
Wartości w elemecie DataRow są przenoszone do wartości parametrów.
Zdarzenie OnRowUpdating jest zgłaszane.
Polecenie jest wykonywane.
Jeśli polecenie ma wartość
FirstReturnedRecord
, pierwszy zwrócony wynik zostanie umieszczony w elemecie DataRow.Jeśli istnieją parametry wyjściowe, są one umieszczane w elemecie DataRow.
Zdarzenie OnRowUpdated jest zgłaszane.
Wywołano metodę AcceptChanges.
Każde polecenie skojarzone z elementem DbDataAdapter zwykle ma skojarzona z nim kolekcję parametrów. Parametry są mapowane na bieżący wiersz za pomocą SourceColumn
właściwości i SourceVersion
klasy dostawcy Parameter
danych .NET Framework. SourceColumn
Odwołuje się do DataTable kolumny, DbDataAdapter do którego 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 |
Wartość A SystemException jest generowana. Gdy mapowania są jawnie ustawione, brakujące mapowanie parametru wejściowego jest zwykle wynikiem błędu. |
MissingMappingAction.Error |
Wartość A SystemException jest generowana. |
Właściwość SourceColumn
jest również używana do mapowania wartości parametrów wyjściowych lub wejściowych/wyjściowych z powrotem na DataSet
wartość . Wyjątek jest generowany, jeśli odwołuje się do nieistnienej kolumny.
Właściwość SourceVersion
klasy dostawcy Parameter
danych .NET Framework określa, czy należy użyć oryginalnej, bieżącej lub proponowanej wersji wartości kolumny. 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.
Uwaga
Jeśli podczas aktualizowania wiersza wystąpi błąd, zgłaszany jest wyjątek, a wykonanie aktualizacji zostanie przerwane. Aby kontynuować operację aktualizacji bez generowania wyjątków po napotkaniu 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
przypadku zdarzenia DataAdapter. Aby kontynuować operację aktualizacji bez generowania wyjątku w zdarzeniu RowUpdated
, ustaw Status właściwość elementu RowUpdatedEventArgs na Continue.