DbDataAdapter.Update Metoda

Definice

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

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.

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

dataSet
DataSet

DataSet použít k aktualizaci zdroje dat.

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

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 DataSetexistuje 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í:

  1. Hodnoty v DataRow se přesunou do hodnot parametrů.

  2. Událost OnRowUpdating je vyvolána.

  3. Příkaz se spustí.

  4. Pokud je příkaz nastaven na FirstReturnedRecord, pak se první vrácený výsledek umístí do DataRow.

  5. Pokud existují výstupní parametry, umístí se do DataRow.

  6. Událost OnRowUpdated je vyvolána.

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

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

dataRows
DataRow[]

Pole DataRow objektů použitých k aktualizaci zdroje dat.

tableMapping
DataTableMapping

Kolekce TableMappings, která se má použít.

Návraty

Počet řádků se úspěšně aktualizoval z pole DataRow objektů.

Výjimky

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í:

  1. Hodnoty v DataRow se přesunou do hodnot parametrů.

  2. Událost OnRowUpdating je vyvolána.

  3. Příkaz se spustí.

  4. Pokud je příkaz nastaven na FirstReturnedRecord, pak se první vrácený výsledek umístí do DataRow.

  5. Pokud existují výstupní parametry, umístí se do DataRow.

  6. Událost OnRowUpdated je vyvolána.

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

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

dataTable
DataTable

DataTable sloužící k aktualizaci zdroje dat.

Návraty

Počet řádků úspěšně aktualizován z DataTable.

Výjimky

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í:

  1. Hodnoty v DataRow se přesunou do hodnot parametrů.

  2. Událost OnRowUpdating je vyvolána.

  3. Příkaz se spustí.

  4. Pokud je příkaz nastaven na FirstReturnedRecord, pak se první vrácený výsledek umístí do DataRow.

  5. Pokud existují výstupní parametry, umístí se do DataRow.

  6. Událost OnRowUpdated je vyvolána.

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

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

dataSet
DataSet

DataSet sloužící k aktualizaci zdroje dat.

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í:

  1. Hodnoty v DataRow se přesunou do hodnot parametrů.

  2. Událost OnRowUpdating je vyvolána.

  3. Příkaz se spustí.

  4. Pokud je příkaz nastaven na FirstReturnedRecord, pak se první vrácený výsledek umístí do DataRow.

  5. Pokud existují výstupní parametry, umístí se do DataRow.

  6. Událost OnRowUpdated je vyvolána.

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

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

dataRows
DataRow[]

Pole DataRow objektů použitých k aktualizaci zdroje dat.

Návraty

Počet řádků úspěšně aktualizován z DataSet.

Výjimky

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í:

  1. Hodnoty v DataRow se přesunou do hodnot parametrů.

  2. Událost OnRowUpdating je vyvolána.

  3. Příkaz se spustí.

  4. Pokud je příkaz nastaven na FirstReturnedRecord, první vrácený výsledek se umístí do DataRow.

  5. Pokud existují výstupní parametry, umístí se do DataRow.

  6. Událost OnRowUpdated je vyvolána.

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

Platí pro