DbDataAdapter.Update Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Aktualizuje hodnoty v databázi spuštěním příslušných příkazů INSERT, UPDATE nebo DELETE pro každý vložený, aktualizovaný nebo odstraněný řádek v DataSet.
Přetížení
Update(DataSet, String) |
Aktualizuje hodnoty v databázi spuštěním příslušných příkazů INSERT, UPDATE nebo DELETE pro každý vložený, aktualizovaný nebo odstraněný řádek v DataSet se zadaným názvem DataTable. |
Update(DataRow[], DataTableMapping) |
Aktualizuje hodnoty v databázi spuštěním příslušných příkazů INSERT, UPDATE nebo DELETE pro každý vložený, aktualizovaný nebo odstraněný řádek v zadaném poli DataRow objektů. |
Update(DataTable) |
Aktualizuje hodnoty v databázi spuštěním příslušných příkazů INSERT, UPDATE nebo DELETE pro každý vložený, aktualizovaný nebo odstraněný řádek v zadaném DataTable. |
Update(DataSet) |
Aktualizuje hodnoty v databázi spuštěním příslušných příkazů INSERT, UPDATE nebo DELETE pro každý vložený, aktualizovaný nebo odstraněný řádek v zadaném DataSet. |
Update(DataRow[]) |
Aktualizuje hodnoty v databázi spuštěním příslušných příkazů INSERT, UPDATE nebo DELETE pro každý vložený, aktualizovaný nebo odstraněný řádek v zadaném poli v DataSet. |
Update(DataSet, String)
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- 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
Název zdrojové tabulky, která se má použít pro mapování tabulek.
Návraty
Počet řádků úspěšně aktualizován z DataSet.
Výjimky
DataSet je neplatný.
Zdrojová tabulka je neplatná.
Výsledkem pokusu o spuštění příkazu INSERT, UPDATE nebo DELETE byly nulové záznamy ovlivněné.
Příklady
Následující příklad používá odvozenou třídu OleDbDataAdapter, k aktualizaci zdroje dat.
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
Poznámky
Když aplikace volá Update metodu, DbDataAdapter zkontroluje RowState vlastnost a provede požadované příkazy INSERT, UPDATE nebo DELETE iterativně pro každý řádek na základě pořadí indexů nakonfigurovaných v DataSet. Například Update může spustit příkaz DELETE, následovaný příkazem INSERT a dalším příkazem DELETE, protože pořadí řádků v DataTable.
Je třeba poznamenat, že tyto příkazy nejsou prováděny jako dávkové procesy; každý řádek se aktualizuje jednotlivě. Aplikace může volat GetChanges metodu v situacích, kdy musíte řídit posloupnost typů příkazů (například INSERT před aktualizací). Další informace naleznete v tématu Aktualizace zdrojů dat pomocí objektů DataAdapter.
Pokud nebyly zadány příkazy INSERT, UPDATE nebo DELETE, metoda Update vygeneruje výjimku. Pokud ale nastavíte vlastnost SelectCommand
zprostředkovatele dat rozhraní .NET Framework, můžete vytvořit objekt SqlCommandBuilder nebo objekt OleDbCommandBuilder, který automaticky generuje příkazy SQL pro aktualizace s jednou tabulkou. Potom všechny další příkazy SQL, které nenastavíte, jsou generovány CommandBuilder. Tato logika generování vyžaduje, aby informace o klíčovém sloupci byly přítomné v DataSet. Další informace naleznete v tématu Generování příkazů pomocí CommandBuilders.
Metoda Update podporuje scénáře, kdy DataSet obsahuje více objektů DataTable, jejichž názvy se liší pouze v případě. Pokud v DataSet
existuje více tabulek se stejným názvem, ale různá velká písmena, Update provede porovnání s rozlišováním malých a velkých písmen, aby se našel odpovídající tabulka, a vygeneruje výjimku, pokud neexistuje přesná shoda. Toto chování ilustruje následující kód jazyka 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.
Je-li Update volána a DataSet obsahuje pouze jeden DataTable, jehož název se liší pouze v případě, že DataTable se aktualizuje. V tomto scénáři je porovnání nerozlišující velká a malá písmena. Toto chování ilustruje následující kód jazyka 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.
Metoda Update před provedením aktualizace načte řádky z tabulky uvedené v prvním mapování. Update potom aktualizuje řádek pomocí hodnoty vlastnosti UpdatedRowSource. Všechny další vrácené řádky se ignorují.
Po načtení všech dat zpět do DataSetse vyvolá událost OnRowUpdated, která uživateli umožní zkontrolovat odsouhlasené DataSet řádek a všechny výstupní parametry vrácené příkazem. Po úspěšné aktualizaci řádku se změny v daném řádku přijmou.
Při použití Updateje pořadí provádění následující:
Hodnoty v DataRow se přesunou do hodnot parametrů.
Událost OnRowUpdating je vyvolána.
Příkaz se spustí.
Pokud je příkaz nastaven na
FirstReturnedRecord
, pak se první vrácený výsledek umístí do DataRow.Pokud existují výstupní parametry, umístí se do DataRow.
Událost OnRowUpdated je vyvolána.
AcceptChanges je volána.
Každý příkaz přidružený k DbDataAdapter má obvykle přidruženou kolekci parametrů. Parametry se mapují na aktuální řádek prostřednictvím SourceColumn
a SourceVersion
vlastností Parameter
zprostředkovatele dat rozhraní .NET Framework.
SourceColumn
odkazuje na sloupec DataTable, na který DbDataAdapter odkazuje na získání hodnot parametrů pro aktuální řádek.
SourceColumn
odkazuje na název nemapovaného sloupce dříve, než se použijí mapování tabulek. Pokud SourceColumn
odkazuje na neexistující sloupec, akce, která byla provedena, závisí na jedné z následujících MissingMappingAction hodnot.
Hodnota výčtu | Přijatá akce |
---|---|
MissingMappingAction.Passthrough |
Pokud neexistuje mapování, použijte názvy zdrojových sloupců a názvy tabulek v DataSet. |
MissingMappingAction.Ignore |
Vygeneruje se SystemException. Pokud jsou mapování explicitně nastavena, chybějící mapování vstupního parametru je obvykle výsledkem chyby. |
MissingMappingAction.Error |
Vygeneruje se SystemException. |
Vlastnost SourceColumn
slouží také k mapování hodnoty výstupních nebo vstupních/výstupních parametrů zpět na DataSet
. Výjimka se vygeneruje, pokud odkazuje na neexistující sloupec.
SourceVersion
vlastnost zprostředkovatele dat rozhraní .NET Framework Parameter
třída určuje, zda použít Original, Current nebo Navrhované verze hodnoty sloupce. Tato funkce se často používá k zahrnutí původních hodnot do klauzule WHERE příkazu UPDATE ke kontrole porušení optimistické souběžnosti.
Poznámka
Pokud při aktualizaci řádku dojde k chybě, vyvolá se výjimka a spuštění aktualizace se ukončí. Chcete-li pokračovat v operaci aktualizace bez generování výjimek při výskytu chyby, nastavte vlastnost ContinueUpdateOnError na true
před voláním Update. V RowUpdated
události DataAdapter můžete také reagovat na chyby na základě jednotlivých řádků. Chcete-li pokračovat v operaci aktualizace bez generování výjimky v rámci události RowUpdated
, nastavte vlastnost StatusRowUpdatedEventArgs na Continue.
Viz také
- manipulace s daty (ADO.NET)
-
DbProviderFactories (ADO.NET) - přehled
ADO.NET
Platí pro
Update(DataRow[], DataTableMapping)
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
Aktualizuje hodnoty v databázi spuštěním příslušných příkazů INSERT, UPDATE nebo DELETE pro každý vložený, aktualizovaný nebo odstraněný řádek v zadaném poli DataRow objektů.
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
Kolekce TableMappings, která se má použít.
Návraty
Počet řádků se úspěšně aktualizoval z pole DataRow objektů.
Výjimky
DataSet je neplatný.
Zdrojová tabulka je neplatná.
Neexistuje žádná DataRow, která by se aktualizovala.
-nebo-
Neexistuje žádná DataTable, která by se aktualizovala.
-nebo-
Jako zdroj neexistuje DataSet.
Výsledkem pokusu o spuštění příkazu INSERT, UPDATE nebo DELETE byly nulové záznamy ovlivněné.
Poznámky
Když aplikace volá Update metodu, DbDataAdapter zkontroluje RowState vlastnost a provede požadované příkazy INSERT, UPDATE nebo DELETE iterativně pro každý řádek na základě pořadí indexů nakonfigurovaných v DataSet. Například Update může spustit příkaz DELETE, následovaný příkazem INSERT a dalším příkazem DELETE, protože pořadí řádků v DataTable.
Je třeba poznamenat, že tyto příkazy nejsou prováděny jako dávkové procesy; každý řádek se aktualizuje jednotlivě. Aplikace může volat GetChanges metodu v situacích, kdy musíte řídit posloupnost typů příkazů (například INSERTs před UPDATEs). Další informace naleznete v tématu Aktualizace zdrojů dat pomocí objektů DataAdapter.
Pokud nebyly zadány příkazy INSERT, UPDATE nebo DELETE, metoda Update vygeneruje výjimku. Pokud ale nastavíte vlastnost SelectCommand
zprostředkovatele dat rozhraní .NET Framework, můžete vytvořit objekt SqlCommandBuilder nebo objekt OleDbCommandBuilder, který automaticky generuje příkazy SQL pro aktualizace s jednou tabulkou. Potom všechny další příkazy SQL, které nenastavíte, jsou generovány CommandBuilder. Tato logika generování vyžaduje, aby informace o klíčovém sloupci byly přítomné v DataSet. Další informace naleznete v tématu Generování příkazů pomocí CommandBuilders.
Metoda Update před provedením aktualizace načte řádky z tabulky uvedené v prvním mapování. Update potom aktualizuje řádek pomocí hodnoty vlastnosti UpdatedRowSource. Všechny další vrácené řádky se ignorují.
Po načtení všech dat zpět do DataSetse vyvolá událost OnRowUpdated, která uživateli umožní zkontrolovat odsouhlasené DataSet řádek a všechny výstupní parametry vrácené příkazem. Po úspěšné aktualizaci řádku se změny v daném řádku přijmou.
Při použití Updateje pořadí provádění následující:
Hodnoty v DataRow se přesunou do hodnot parametrů.
Událost OnRowUpdating je vyvolána.
Příkaz se spustí.
Pokud je příkaz nastaven na
FirstReturnedRecord
, pak se první vrácený výsledek umístí do DataRow.Pokud existují výstupní parametry, umístí se do DataRow.
Událost OnRowUpdated je vyvolána.
AcceptChanges je volána.
Každý příkaz přidružený k DbDataAdapter má obvykle přidruženou kolekci parametrů. Parametry se mapují na aktuální řádek prostřednictvím SourceColumn
a SourceVersion
vlastností Parameter
zprostředkovatele dat rozhraní .NET Framework.
SourceColumn
odkazuje na sloupec DataTable, na který DbDataAdapter odkazuje na získání hodnot parametrů pro aktuální řádek.
SourceColumn
odkazuje na název nemapovaného sloupce dříve, než se použijí mapování tabulek. Pokud SourceColumn
odkazuje na neexistující sloupec, akce, která byla provedena, závisí na jedné z následujících MissingMappingAction hodnot.
Hodnota výčtu | Přijatá akce |
---|---|
MissingMappingAction.Passthrough |
Pokud neexistuje mapování, použijte názvy zdrojových sloupců a názvy tabulek v DataSet. |
MissingMappingAction.Ignore |
Vygeneruje se SystemException. Pokud jsou mapování explicitně nastavena, chybějící mapování vstupního parametru je obvykle výsledkem chyby. |
MissingMappingAction.Error |
Vygeneruje se SystemException. |
Vlastnost SourceColumn
slouží také k mapování hodnoty výstupních nebo vstupních/výstupních parametrů zpět na DataSet
. Výjimka se vygeneruje, pokud odkazuje na neexistující sloupec.
SourceVersion
vlastnost zprostředkovatele dat rozhraní .NET Framework Parameter
třída určuje, zda použít Original, Current nebo Navrhované verze hodnoty sloupce. Tato funkce se často používá k zahrnutí původních hodnot do klauzule WHERE příkazu UPDATE ke kontrole porušení optimistické souběžnosti.
Poznámka
Pokud při aktualizaci řádku dojde k chybě, vyvolá se výjimka a spuštění aktualizace se ukončí. Chcete-li pokračovat v operaci aktualizace bez generování výjimek při výskytu chyby, nastavte vlastnost ContinueUpdateOnError na true
před voláním Update. V RowUpdated
události DataAdapter můžete také reagovat na chyby na základě jednotlivých řádků. Chcete-li pokračovat v operaci aktualizace bez generování výjimky v rámci události RowUpdated
, nastavte vlastnost StatusRowUpdatedEventArgs na Continue.
Viz také
- manipulace s daty (ADO.NET)
-
DbProviderFactories (ADO.NET) - přehled
ADO.NET
Platí pro
Update(DataTable)
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
Aktualizuje hodnoty v databázi spuštěním příslušných příkazů INSERT, UPDATE nebo DELETE pro každý vložený, aktualizovaný nebo odstraněný řádek v zadaném 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
Parametry
Návraty
Počet řádků úspěšně aktualizován z DataTable.
Výjimky
DataSet je neplatný.
Zdrojová tabulka je neplatná.
Neexistuje žádná DataRow, která by se aktualizovala.
-nebo-
Neexistuje žádná DataTable, která by se aktualizovala.
-nebo-
Jako zdroj neexistuje DataSet.
Výsledkem pokusu o spuštění příkazu INSERT, UPDATE nebo DELETE byly nulové záznamy ovlivněné.
Příklady
Následující příklad používá odvozenou třídu OleDbDataAdapter, k aktualizaci zdroje dat.
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
Poznámky
Když aplikace volá Update metodu, DbDataAdapter zkontroluje RowState vlastnost a provede požadované příkazy INSERT, UPDATE nebo DELETE iterativně pro každý řádek na základě pořadí indexů nakonfigurovaných v DataSet. Například Update může spustit příkaz DELETE, následovaný příkazem INSERT a dalším příkazem DELETE, protože pořadí řádků v DataTable.
Je třeba poznamenat, že tyto příkazy nejsou prováděny jako dávkové procesy; každý řádek se aktualizuje jednotlivě. Aplikace může volat GetChanges metodu v situacích, kdy musíte řídit posloupnost typů příkazů (například INSERTs před UPDATEs). Další informace naleznete v tématu Aktualizace zdrojů dat pomocí objektů DataAdapter.
Pokud nebyly zadány příkazy INSERT, UPDATE nebo DELETE, metoda Update vygeneruje výjimku. Pokud ale nastavíte vlastnost SelectCommand
zprostředkovatele dat rozhraní .NET Framework, můžete vytvořit objekt SqlCommandBuilder nebo objekt OleDbCommandBuilder, který automaticky generuje příkazy SQL pro aktualizace s jednou tabulkou. Potom všechny další příkazy SQL, které nenastavíte, jsou generovány CommandBuilder. Tato logika generování vyžaduje, aby informace o klíčovém sloupci byly přítomné v DataSet. Další informace naleznete v tématu Generování příkazů pomocí CommandBuilders.
Metoda Update před provedením aktualizace načte řádky z tabulky uvedené v prvním mapování. Update potom aktualizuje řádek pomocí hodnoty vlastnosti UpdatedRowSource. Všechny další vrácené řádky se ignorují.
Po načtení všech dat zpět do DataSetse vyvolá událost OnRowUpdated, která uživateli umožní zkontrolovat odsouhlasené DataSet řádek a všechny výstupní parametry vrácené příkazem. Po úspěšné aktualizaci řádku se změny v daném řádku přijmou.
Při použití Updateje pořadí provádění následující:
Hodnoty v DataRow se přesunou do hodnot parametrů.
Událost OnRowUpdating je vyvolána.
Příkaz se spustí.
Pokud je příkaz nastaven na
FirstReturnedRecord
, pak se první vrácený výsledek umístí do DataRow.Pokud existují výstupní parametry, umístí se do DataRow.
Událost OnRowUpdated je vyvolána.
AcceptChanges je volána.
Každý příkaz přidružený k DbDataAdapter má obvykle přidruženou kolekci parametrů. Parametry se mapují na aktuální řádek prostřednictvím SourceColumn
a SourceVersion
vlastností Parameter
zprostředkovatele dat rozhraní .NET Framework.
SourceColumn
odkazuje na sloupec DataTable, na který DbDataAdapter odkazuje na získání hodnot parametrů pro aktuální řádek.
SourceColumn
odkazuje na název nemapovaného sloupce dříve, než se použijí mapování tabulek. Pokud SourceColumn
odkazuje na neexistující sloupec, akce, která byla provedena, závisí na jedné z následujících MissingMappingAction hodnot.
Hodnota výčtu | Přijatá akce |
---|---|
MissingMappingAction.Passthrough |
Pokud neexistuje mapování, použijte názvy zdrojových sloupců a názvy tabulek v DataSet. |
MissingMappingAction.Ignore |
Vygeneruje se SystemException. Pokud jsou mapování explicitně nastavena, chybějící mapování vstupního parametru je obvykle výsledkem chyby. |
MissingMappingAction.Error |
Vygeneruje se SystemException. |
Vlastnost SourceColumn
slouží také k mapování hodnoty výstupních nebo vstupních/výstupních parametrů zpět na DataSet
. Výjimka se vygeneruje, pokud odkazuje na neexistující sloupec.
SourceVersion
vlastnost zprostředkovatele dat rozhraní .NET Framework Parameter
třída určuje, zda použít Original, Current nebo Navrhované verze hodnoty sloupce. Tato funkce se často používá k zahrnutí původních hodnot do klauzule WHERE příkazu UPDATE ke kontrole porušení optimistické souběžnosti.
Poznámka
Pokud při aktualizaci řádku dojde k chybě, vyvolá se výjimka a spuštění aktualizace se ukončí. Chcete-li pokračovat v operaci aktualizace bez generování výjimek při výskytu chyby, nastavte vlastnost ContinueUpdateOnError na true
před voláním Update. V RowUpdated
události DataAdapter můžete také reagovat na chyby na základě jednotlivých řádků. Chcete-li pokračovat v operaci aktualizace bez generování výjimky v rámci události RowUpdated
, nastavte vlastnost StatusRowUpdatedEventArgs na Continue.
Viz také
- manipulace s daty (ADO.NET)
-
DbProviderFactories (ADO.NET) - přehled
ADO.NET
Platí pro
Update(DataSet)
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
Aktualizuje hodnoty v databázi spuštěním příslušných příkazů INSERT, UPDATE nebo DELETE pro každý vložený, aktualizovaný nebo odstraněný řádek v zadaném 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
Parametry
Návraty
Počet řádků úspěšně aktualizován z DataSet.
Implementuje
Výjimky
Zdrojová tabulka je neplatná.
Výsledkem pokusu o spuštění příkazu INSERT, UPDATE nebo DELETE byly nulové záznamy ovlivněné.
Příklady
Následující příklad používá odvozenou třídu OleDbDataAdapter, k aktualizaci zdroje dat.
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
Poznámky
Když aplikace volá Update metodu, DbDataAdapter zkontroluje RowState vlastnost a provede požadované příkazy INSERT, UPDATE nebo DELETE iterativně pro každý řádek na základě pořadí indexů nakonfigurovaných v DataSet. Například Update může spustit příkaz DELETE, následovaný příkazem INSERT a dalším příkazem DELETE, protože pořadí řádků v DataTable.
Je třeba poznamenat, že tyto příkazy nejsou prováděny jako dávkové procesy; každý řádek se aktualizuje jednotlivě. Aplikace může volat GetChanges metodu v situacích, kdy musíte řídit posloupnost typů příkazů (například INSERTs před UPDATEs). Další informace naleznete v tématu Aktualizace zdrojů dat pomocí objektů DataAdapter.
Pokud nebyly zadány příkazy INSERT, UPDATE nebo DELETE, metoda Update vygeneruje výjimku. Pokud ale nastavíte vlastnost SelectCommand
zprostředkovatele dat rozhraní .NET Framework, můžete vytvořit objekt SqlCommandBuilder nebo objekt OleDbCommandBuilder, který automaticky generuje příkazy SQL pro aktualizace s jednou tabulkou. Potom všechny další příkazy SQL, které nenastavíte, jsou generovány CommandBuilder. Tato logika generování vyžaduje, aby informace o klíčovém sloupci byly přítomné v DataSet. Další informace naleznete v tématu Generování příkazů pomocí CommandBuilders.
Metoda Update před provedením aktualizace načte řádky z tabulky uvedené v prvním mapování. Update potom aktualizuje řádek pomocí hodnoty vlastnosti UpdatedRowSource. Všechny další vrácené řádky se ignorují.
Po načtení všech dat zpět do DataSetse vyvolá událost OnRowUpdated, která uživateli umožní zkontrolovat odsouhlasené DataSet řádek a všechny výstupní parametry vrácené příkazem. Po úspěšné aktualizaci řádku se změny v daném řádku přijmou.
Při použití Updateje pořadí provádění následující:
Hodnoty v DataRow se přesunou do hodnot parametrů.
Událost OnRowUpdating je vyvolána.
Příkaz se spustí.
Pokud je příkaz nastaven na
FirstReturnedRecord
, pak se první vrácený výsledek umístí do DataRow.Pokud existují výstupní parametry, umístí se do DataRow.
Událost OnRowUpdated je vyvolána.
AcceptChanges je volána.
Každý příkaz přidružený k DbDataAdapter má obvykle přidruženou kolekci parametrů. Parametry se mapují na aktuální řádek prostřednictvím SourceColumn
a SourceVersion
vlastností Parameter
zprostředkovatele dat rozhraní .NET Framework.
SourceColumn
odkazuje na sloupec DataTable, na který DbDataAdapter odkazuje na získání hodnot parametrů pro aktuální řádek.
SourceColumn
odkazuje na název nemapovaného sloupce dříve, než se použijí mapování tabulek. Pokud SourceColumn
odkazuje na neexistující sloupec, akce, která byla provedena, závisí na jedné z následujících MissingMappingAction hodnot.
Hodnota výčtu | Přijatá akce |
---|---|
MissingMappingAction.Passthrough |
Pokud neexistuje mapování, použijte názvy zdrojových sloupců a názvy tabulek v DataSet. |
MissingMappingAction.Ignore |
Vygeneruje se SystemException. Pokud jsou mapování explicitně nastavena, chybějící mapování vstupního parametru je obvykle výsledkem chyby. |
MissingMappingAction.Error |
Vygeneruje se SystemException. |
Vlastnost SourceColumn
slouží také k mapování hodnoty výstupních nebo vstupních/výstupních parametrů zpět na DataSet
. Výjimka se vygeneruje, pokud odkazuje na neexistující sloupec.
SourceVersion
vlastnost zprostředkovatele dat rozhraní .NET Framework Parameter
třída určuje, zda použít Original, Current nebo Navrhované verze hodnoty sloupce. Tato funkce se často používá k zahrnutí původních hodnot do klauzule WHERE příkazu UPDATE ke kontrole porušení optimistické souběžnosti.
Poznámka
Pokud při aktualizaci řádku dojde k chybě, vyvolá se výjimka a spuštění aktualizace se ukončí. Chcete-li pokračovat v operaci aktualizace bez generování výjimek při výskytu chyby, nastavte vlastnost ContinueUpdateOnError na true
před voláním Update. V RowUpdated
události DataAdapter můžete také reagovat na chyby na základě jednotlivých řádků. Chcete-li pokračovat v operaci aktualizace bez generování výjimky v rámci události RowUpdated
, nastavte vlastnost StatusRowUpdatedEventArgs na Continue.
Viz také
- manipulace s daty (ADO.NET)
-
DbProviderFactories (ADO.NET) - přehled
ADO.NET
Platí pro
Update(DataRow[])
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
Aktualizuje hodnoty v databázi spuštěním příslušných příkazů INSERT, UPDATE nebo DELETE pro každý vložený, aktualizovaný nebo odstraněný řádek v zadaném poli v 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
Parametry
Návraty
Počet řádků úspěšně aktualizován z DataSet.
Výjimky
DataSet je neplatný.
Zdrojová tabulka je neplatná.
Neexistuje žádná DataRow, která by se aktualizovala.
-nebo-
Neexistuje žádná DataTable, která by se aktualizovala.
-nebo-
Jako zdroj neexistuje DataSet.
Výsledkem pokusu o spuštění příkazu INSERT, UPDATE nebo DELETE byly nulové záznamy ovlivněné.
Příklady
Následující příklad používá odvozenou třídu OleDbDataAdapter, k aktualizaci zdroje dat.
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
Poznámky
Když aplikace volá Update metodu, DbDataAdapter zkontroluje RowState vlastnost a provede požadované příkazy INSERT, UPDATE nebo DELETE iterativně pro každý řádek na základě pořadí indexů nakonfigurovaných v DataSet. Například Update může spustit příkaz DELETE, následovaný příkazem INSERT a dalším příkazem DELETE, protože pořadí řádků v DataTable.
Je třeba poznamenat, že tyto příkazy nejsou prováděny jako dávkové procesy; každý řádek se aktualizuje jednotlivě. Aplikace může volat GetChanges metodu v situacích, kdy musíte řídit posloupnost typů příkazů (například INSERTs před UPDATEs). Další informace naleznete v tématu Aktualizace zdrojů dat pomocí objektů DataAdapter.
Pokud nebyly zadány příkazy INSERT, UPDATE nebo DELETE, metoda Update vygeneruje výjimku. Pokud ale nastavíte vlastnost SelectCommand
zprostředkovatele dat rozhraní .NET Framework, můžete vytvořit objekt SqlCommandBuilder nebo objekt OleDbCommandBuilder, který automaticky generuje příkazy SQL pro aktualizace s jednou tabulkou. Potom všechny další příkazy SQL, které nenastavíte, jsou generovány CommandBuilder. Tato logika generování vyžaduje, aby informace o klíčovém sloupci byly přítomné v DataSet. Další informace naleznete v tématu Generování příkazů pomocí CommandBuilders.
Metoda Update před provedením aktualizace načte řádky z tabulky uvedené v prvním mapování. Update potom aktualizuje řádek pomocí hodnoty vlastnosti UpdatedRowSource. Všechny další vrácené řádky se ignorují.
Po načtení všech dat zpět do DataSetse vyvolá událost OnRowUpdated, která uživateli umožní zkontrolovat odsouhlasené DataSet řádek a všechny výstupní parametry vrácené příkazem. Po úspěšné aktualizaci řádku se změny v daném řádku přijmou.
Při použití Updateje pořadí provádění následující:
Hodnoty v DataRow se přesunou do hodnot parametrů.
Událost OnRowUpdating je vyvolána.
Příkaz se spustí.
Pokud je příkaz nastaven na
FirstReturnedRecord
, první vrácený výsledek se umístí do DataRow.Pokud existují výstupní parametry, umístí se do DataRow.
Událost OnRowUpdated je vyvolána.
AcceptChanges je volána.
Každý příkaz přidružený k DbDataAdapter má obvykle přidruženou kolekci parametrů. Parametry se mapují na aktuální řádek prostřednictvím SourceColumn
a SourceVersion
vlastností Parameter
zprostředkovatele dat rozhraní .NET Framework.
SourceColumn
odkazuje na sloupec DataTable, na který DbDataAdapter odkazuje na získání hodnot parametrů pro aktuální řádek.
SourceColumn
odkazuje na název nemapovaného sloupce dříve, než se použijí mapování tabulek. Pokud SourceColumn
odkazuje na neexistující sloupec, akce, která byla provedena, závisí na jedné z následujících MissingMappingAction hodnot.
Hodnota výčtu | Přijatá akce |
---|---|
MissingMappingAction.Passthrough |
Pokud neexistuje mapování, použijte názvy zdrojových sloupců a názvy tabulek v DataSet. |
MissingMappingAction.Ignore |
Vygeneruje se SystemException. Pokud jsou mapování explicitně nastavena, chybějící mapování vstupního parametru je obvykle výsledkem chyby. |
MissingMappingAction.Error |
Vygeneruje se SystemException. |
Vlastnost SourceColumn
slouží také k mapování hodnoty výstupních nebo vstupních/výstupních parametrů zpět na DataSet
. Výjimka se vygeneruje, pokud odkazuje na neexistující sloupec.
SourceVersion
vlastnost zprostředkovatele dat rozhraní .NET Framework Parameter
třída určuje, zda použít Original, Current nebo Navrhované verze hodnoty sloupce. Tato funkce se často používá k zahrnutí původních hodnot do klauzule WHERE příkazu UPDATE ke kontrole porušení optimistické souběžnosti.
Poznámka
Pokud při aktualizaci řádku dojde k chybě, vyvolá se výjimka a spuštění aktualizace se ukončí. Chcete-li pokračovat v operaci aktualizace bez generování výjimek při výskytu chyby, nastavte vlastnost ContinueUpdateOnError na true
před voláním Update. V RowUpdated
události DataAdapter můžete také reagovat na chyby na základě jednotlivých řádků. Chcete-li pokračovat v operaci aktualizace bez generování výjimky v rámci události RowUpdated
, nastavte vlastnost StatusRowUpdatedEventArgs na Continue.
Viz také
- manipulace s daty (ADO.NET)
-
DbProviderFactories (ADO.NET) - přehled
ADO.NET