DbDataAdapter.Update Metoda

Definice

Aktualizace 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 objektu DataSet.

Přetížení

Update(DataSet, String)

Aktualizace 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 objektu DataSet se zadaným DataTable názvem.

Update(DataRow[], DataTableMapping)

Aktualizace 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)

Aktualizace 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 DataTableobjektu .

Update(DataSet)

Aktualizace 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 DataSetobjektu .

Update(DataRow[])

Aktualizace 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)

Aktualizace 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 objektu DataSet se zadaným DataTable názvem.

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

Slouží DataSet k aktualizaci zdroje dat.

srcTable
String

Název zdrojové tabulky, která se má použít pro mapování tabulky.

Návraty

Počet řádků, které byly úspěšně aktualizovány z .DataSet

Výjimky

Hodnota DataSet je neplatná.

Zdrojová tabulka je neplatná.

Pokus o spuštění příkazu INSERT, UPDATE nebo DELETE způsobil nulový dopad na záznamy.

Příklady

Následující příklad používá k aktualizaci zdroje dat odvozenou třídu OleDbDataAdapter, .

public DataSet CreateCmdsAndUpdate(string connectionString,
    string queryString, string tableName)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

        connection.Open();

        DataSet customers = new DataSet();
        adapter.Fill(customers);

        //code to modify data in dataset here

        adapter.Update(customers, tableName);

        return customers;
    }
}
Public Function CreateCmdsAndUpdate(ByVal connectionString As String, _
    ByVal queryString As String, _
    ByVal tableName As String) As DataSet

    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter()
        adapter.SelectCommand = New OleDbCommand(queryString, connection)
        Dim builder As New OleDbCommandBuilder(adapter)

        connection.Open()

        Dim customers As New DataSet()
        adapter.Fill(customers)

        ' Code to modify data in DataSet here 

        adapter.Update(customers, tableName)

        Return customers
    End Using
End Function

Poznámky

Když aplikace volá metodu Update , DbDataAdapter prozkoumá RowState vlastnost a spustí požadované příkazy INSERT, UPDATE nebo DELETE iterativně pro každý řádek v závislosti na pořadí indexů nakonfigurovaných v DataSet. Update Například může provést příkaz DELETE následovaný příkazem INSERT a dalším příkazem DELETE, a to kvůli pořadí řádků v objektu DataTable.

Je třeba poznamenat, že tyto příkazy nejsou prováděny jako dávkové procesy; každý řádek se aktualizuje zvlášť. Aplikace může volat metodu GetChanges v situacích, kdy musíte řídit posloupnost typů příkazů (například INSERT před UPDATE). Další informace najdete v tématu Aktualizace zdrojů dat pomocí objektů DataAdapter.

Pokud příkazy INSERT, UPDATE nebo DELETE nebyly zadány, Update metoda vygeneruje výjimku. Pokud však nastavíte SelectCommand vlastnost zprostředkovatele dat rozhraní .NET Framework, můžete vytvořit SqlCommandBuilder objekt nebo OleDbCommandBuilder pro automatické generování příkazů SQL pro aktualizace s jednou tabulkou. Pak se všechny další příkazy SQL, které nenastavíte, vygeneruje CommandBuilder. Tato logika generování vyžaduje, aby informace o klíčovém sloupci byly v DataSet. Další informace najdete v tématu Generování příkazů pomocí CommandBuilders.

Metoda Update podporuje scénáře, kdy DataSet objekt obsahuje více DataTable objektů, jejichž názvy se liší pouze velikostí písmen. Pokud v DataSetobjektu existuje více tabulek se stejným názvem, ale s různými písmeny a písmeny, Update nástroj provede porovnání s rozlišováním velkých a malých písmen za účelem nalezení odpovídající tabulky 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.  

Pokud Update je volána a DataSet obsahuje pouze jeden DataTable , jehož název se liší pouze velikostí písmen, DataTable aktualizuje se. V tomto scénáři se při porovnání nerozlišují malá a velká 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 načte řádky z tabulky uvedené v prvním mapování před provedením aktualizace. Pak Update aktualizuje řádek pomocí hodnoty UpdatedRowSource vlastnosti . Všechny další vrácené řádky se ignorují.

Po načtení všech dat zpět do DataSettřídy se OnRowUpdated vyvolá událost, která uživateli umožní zkontrolovat odsouhlasený DataSet řádek a všechny výstupní parametry vrácené příkazem . Po úspěšné aktualizaci řádku jsou změny v daném řádku přijaty.

Při použití příkazu Updateje pořadí provádění následující:

  1. Hodnoty v parametru 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 FirstReturnedRecordhodnotu , 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. Volá se AcceptChanges.

Každý příkaz přidružený k příkazu DbDataAdapter má obvykle přidruženou kolekci parametrů. Parametry jsou mapovány na aktuální řádek prostřednictvím SourceColumn vlastností a SourceVersion třídy zprostředkovatele Parameter dat rozhraní .NET Framework. SourceColumn odkazuje na DataTable sloupec, který DbDataAdapter odkazuje k získání hodnot parametrů pro aktuální řádek.

SourceColumn odkazuje na název nenamapovaného sloupce před tím, než se použije mapování tabulek. Pokud SourceColumn odkazuje na neexistující sloupec, akce závisí na jedné z následujících MissingMappingAction hodnot.

Výčtová hodnota Akce byla provedena
MissingMappingAction.Passthrough Pokud není k dispozici žádné mapování, použijte názvy zdrojových sloupců a názvy DataSet tabulek.
MissingMappingAction.Ignore Vygeneruje SystemException se . Když jsou mapování explicitně nastavená, chybějící mapování pro vstupní parametr je obvykle výsledkem chyby.
MissingMappingAction.Error Vygeneruje SystemException se .

Vlastnost se SourceColumn také používá 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.

Vlastnost SourceVersion třídy zprostředkovatele Parameter dat rozhraní .NET Framework určuje, zda se má použít původní, aktuální 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 narušení optimistické souběžnosti.

Poznámka

Pokud při aktualizaci řádku dojde k chybě, vyvolá se výjimka a provádění aktualizace se ukončí. Pokud chcete pokračovat v operaci aktualizace bez generování výjimek při výskytu chyby, nastavte vlastnost před true voláním ContinueUpdateOnErrorUpdatena hodnotu . V rámci RowUpdated události datovéhoadapteru můžete také reagovat na chyby po jednotlivých řádcích. Pokud chcete v operaci aktualizace pokračovat bez generování výjimky v rámci RowUpdated události, nastavte Status vlastnost objektu RowUpdatedEventArgs na Continue.

Viz také

Platí pro

Update(DataRow[], DataTableMapping)

Aktualizace 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 DataRow poli 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ů sloužících k aktualizaci zdroje dat.

tableMapping
DataTableMapping

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

Návraty

Počet řádků, které byly úspěšně aktualizovány z pole DataRow objektů.

Výjimky

Hodnota DataSet je neplatná.

Zdrojová tabulka je neplatná.

Neexistuje DataRow k aktualizaci.

-nebo-

Neexistuje DataTable k aktualizaci.

-nebo-

Neexistuje DataSet , co by bylo možné použít jako zdroj.

Pokus o spuštění příkazu INSERT, UPDATE nebo DELETE způsobil nulový dopad na záznamy.

Poznámky

Když aplikace volá metodu Update , DbDataAdapter prozkoumá RowState vlastnost a spustí požadované příkazy INSERT, UPDATE nebo DELETE iterativně pro každý řádek v závislosti na pořadí indexů nakonfigurovaných v DataSet. Update Například může provést příkaz DELETE následovaný příkazem INSERT a dalším příkazem DELETE, a to kvůli pořadí řádků v objektu DataTable.

Je třeba poznamenat, že tyto příkazy nejsou prováděny jako dávkové procesy; každý řádek se aktualizuje zvlášť. Aplikace může volat metodu GetChanges v situacích, kdy musíte řídit sekvenci typů příkazů (například INSERT před updates). Další informace najdete v tématu Aktualizace zdrojů dat pomocí objektů DataAdapter.

Pokud příkazy INSERT, UPDATE nebo DELETE nebyly zadány, Update metoda vygeneruje výjimku. Pokud však nastavíte SelectCommand vlastnost zprostředkovatele dat rozhraní .NET Framework, můžete vytvořit SqlCommandBuilder objekt nebo OleDbCommandBuilder pro automatické generování příkazů SQL pro aktualizace s jednou tabulkou. Pak se všechny další příkazy SQL, které nenastavíte, vygeneruje CommandBuilder. Tato logika generování vyžaduje, aby informace o klíčovém sloupci byly v DataSet. Další informace najdete v tématu Generování příkazů pomocí CommandBuilders.

Metoda Update načte řádky z tabulky uvedené v prvním mapování před provedením aktualizace. Pak Update aktualizuje řádek pomocí hodnoty UpdatedRowSource vlastnosti . Všechny další vrácené řádky se ignorují.

Po načtení všech dat zpět do DataSettřídy se OnRowUpdated vyvolá událost, která uživateli umožní zkontrolovat odsouhlasený DataSet řádek a všechny výstupní parametry vrácené příkazem . Po úspěšné aktualizaci řádku jsou změny v daném řádku přijaty.

Při použití příkazu Updateje pořadí provádění následující:

  1. Hodnoty v parametru 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 FirstReturnedRecordhodnotu , 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. Volá se AcceptChanges.

Každý příkaz přidružený k DbDataAdapter příkazu má obvykle přidruženou kolekci parametrů. Parametry jsou mapovány na aktuální řádek prostřednictvím SourceColumn vlastností a SourceVersion třídy zprostředkovatele Parameter dat rozhraní .NET Framework. SourceColumn odkazuje na DataTable sloupec, který DbDataAdapter odkazuje na získání hodnot parametrů pro aktuální řádek.

SourceColumn odkazuje na název nenamapovaného sloupce před tím, než se použije mapování tabulek. Pokud SourceColumn odkazuje na neexistující sloupec, akce závisí na jedné z následujících MissingMappingAction hodnot.

Výčtová hodnota Akce byla provedena
MissingMappingAction.Passthrough Pokud není k dispozici žádné mapování, použijte názvy zdrojových sloupců a názvy DataSet tabulek.
MissingMappingAction.Ignore Vygeneruje SystemException se . Když jsou mapování explicitně nastavena, chybějící mapování vstupního parametru je obvykle výsledkem chyby.
MissingMappingAction.Error Vygeneruje SystemException se .

Vlastnost SourceColumn se také používá 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.

Vlastnost SourceVersion třídy zprostředkovatele Parameter dat rozhraní .NET Framework určuje, zda se má použít původní, aktuální 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 narušení optimistické souběžnosti.

Poznámka

Pokud při aktualizaci řádku dojde k chybě, vyvolá se výjimka a provádění aktualizace se ukončí. Pokud chcete pokračovat v operaci aktualizace bez generování výjimek při výskytu chyby, nastavte vlastnost před true voláním ContinueUpdateOnErrorUpdatena hodnotu . Můžete také reagovat na chyby pro jednotlivé řádky v rámci RowUpdated události DataAdapter. Pokud chcete pokračovat v operaci aktualizace bez generování výjimky v rámci RowUpdated události, nastavte Status vlastnost vlastnosti RowUpdatedEventArgs na Continue.

Viz také

Platí pro

Update(DataTable)

Aktualizace 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řádku .

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

Slouží DataTable k aktualizaci zdroje dat.

Návraty

Počet řádků, které se úspěšně aktualizovaly z objektu DataTable.

Výjimky

Hodnota DataSet je neplatná.

Zdrojová tabulka je neplatná.

Neexistuje DataRow žádná aktualizace.

-nebo-

Neexistuje DataTable žádná aktualizace.

-nebo-

Neexistuje DataSet žádný zdroj, který by se použil jako zdroj.

Při pokusu o spuštění příkazu INSERT, UPDATE nebo DELETE došlo k nulovému ovlivnění záznamů.

Příklady

Následující příklad používá k aktualizaci zdroje dat odvozenou třídu OleDbDataAdapter, .

public DataTable CreateCmdsAndUpdate(string connectionString,
    string queryString)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

        connection.Open();

        DataTable customers = new DataTable();
        adapter.Fill(customers);

        // code to modify data in DataTable here

        adapter.Update(customers);

        return customers;
    }
}
Public Function CreateCmdsAndUpdate(ByVal connectionString As String, _
    ByVal queryString As String) As DataTable

    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter()
        adapter.SelectCommand = New OleDbCommand(queryString, connection)
        Dim builder As New OleDbCommandBuilder(adapter)

        connection.Open()

        Dim customers As New DataTable()
        adapter.Fill(customers)

        ' Code to modify data in DataTable here 

        adapter.Update(customers)
        Return customers
    End Using
End Function

Poznámky

Když aplikace volá metodu Update , DbDataAdapter prozkoumá RowState vlastnost a spustí požadované příkazy INSERT, UPDATE nebo DELETE iterativním způsobem pro každý řádek v závislosti na pořadí indexů nakonfigurovaných v objektu DataSet. Může například Update spustit příkaz DELETE následovaný příkazem INSERT a pak dalším příkazem DELETE kvůli seřazení řádků v objektu 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 metodu GetChanges v situacích, kdy musíte řídit sekvenci typů příkazů (například INSERTs před UPDATEs). Další informace najdete v tématu Aktualizace zdrojů dat pomocí objektů DataAdapter.

Pokud příkazy INSERT, UPDATE nebo DELETE nebyly zadány, Update metoda vygeneruje výjimku. Pokud ale nastavíte SelectCommand vlastnost zprostředkovatele dat rozhraní .NET Framework, můžete vytvořit SqlCommandBuilder objekt nebo OleDbCommandBuilder pro automatické generování příkazů 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 DataSetbyly v souboru . Další informace najdete v tématu Generování příkazů pomocí CommandBuilders.

Metoda Update načte řádky z tabulky uvedené v prvním mapování před provedením aktualizace. Potom Update aktualizuje řádek pomocí hodnoty UpdatedRowSource vlastnosti. Všechny další vrácené řádky budou ignorovány.

Po načtení všech dat zpět do DataSet, OnRowUpdated se vyvolá událost, 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í provedení následující:

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

  2. Událost OnRowUpdating je vyvolána.

  3. Příkaz se spustí.

  4. Pokud je příkaz nastavený na FirstReturnedRecordhodnotu , 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. Volá se AcceptChanges.

Každý příkaz přidružený k DbDataAdapter příkazu má obvykle přidruženou kolekci parametrů. Parametry jsou mapovány na aktuální řádek prostřednictvím SourceColumn vlastností a SourceVersion třídy zprostředkovatele Parameter dat rozhraní .NET Framework. SourceColumn odkazuje na DataTable sloupec, který DbDataAdapter odkazuje na získání hodnot parametrů pro aktuální řádek.

SourceColumn odkazuje na název nenamapovaného sloupce před tím, než se použije mapování tabulek. Pokud SourceColumn odkazuje na neexistující sloupec, akce závisí na jedné z následujících MissingMappingAction hodnot.

Výčtová hodnota Akce byla provedena
MissingMappingAction.Passthrough Pokud není k dispozici žádné mapování, použijte názvy zdrojových sloupců a názvy DataSet tabulek.
MissingMappingAction.Ignore Vygeneruje SystemException se . Když jsou mapování explicitně nastavena, chybějící mapování vstupního parametru je obvykle výsledkem chyby.
MissingMappingAction.Error Vygeneruje SystemException se .

Vlastnost SourceColumn se také používá 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.

Vlastnost SourceVersion třídy zprostředkovatele Parameter dat rozhraní .NET Framework určuje, zda se má použít původní, aktuální 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 narušení optimistické souběžnosti.

Poznámka

Pokud při aktualizaci řádku dojde k chybě, vyvolá se výjimka a provádění aktualizace se ukončí. Pokud chcete pokračovat v operaci aktualizace bez generování výjimek při výskytu chyby, nastavte vlastnost před true voláním ContinueUpdateOnErrorUpdatena hodnotu . Můžete také reagovat na chyby pro jednotlivé řádky v rámci RowUpdated události DataAdapter. Pokud chcete pokračovat v operaci aktualizace bez generování výjimky v rámci RowUpdated události, nastavte Status vlastnost vlastnosti RowUpdatedEventArgs na Continue.

Viz také

Platí pro

Update(DataSet)

Aktualizace 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řádku .

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

Slouží DataSet k aktualizaci zdroje dat.

Návraty

Počet řádků, které se úspěšně aktualizovaly z objektu DataSet.

Implementuje

Výjimky

Zdrojová tabulka je neplatná.

Při pokusu o spuštění příkazu INSERT, UPDATE nebo DELETE došlo k nulovému ovlivnění záznamů.

Příklady

Následující příklad používá k aktualizaci zdroje dat odvozenou třídu OleDbDataAdapter, .

public DataSet CreateCmdsAndUpdate(string connectionString,
    string queryString)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

        connection.Open();

        DataSet customers = new DataSet();
        adapter.Fill(customers);

        //code to modify data in dataset here

        adapter.Update(customers);

        return customers;
    }
}
Public Function CreateCmdsAndUpdate(ByVal connectionString As String, _
    ByVal queryString As String) As DataSet

    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter()
        adapter.SelectCommand = New OleDbCommand(queryString, connection)
        Dim builder As New OleDbCommandBuilder(adapter)

        connection.Open()

        Dim customers As New DataSet()
        adapter.Fill(customers)

        ' Code to modify data in DataSet here 

        adapter.Update(customers)

        Return customers
    End Using
End Function

Poznámky

Když aplikace volá metodu Update , DbDataAdapter prozkoumá RowState vlastnost a spustí požadované příkazy INSERT, UPDATE nebo DELETE iterativním způsobem pro každý řádek v závislosti na pořadí indexů nakonfigurovaných v objektu DataSet. Může například Update spustit příkaz DELETE následovaný příkazem INSERT a pak dalším příkazem DELETE kvůli seřazení řádků v objektu 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 metodu GetChanges v situacích, kdy musíte řídit sekvenci typů příkazů (například INSERTs před UPDATEs). Další informace najdete v tématu Aktualizace zdrojů dat pomocí objektů DataAdapter.

Pokud příkazy INSERT, UPDATE nebo DELETE nebyly zadány, Update metoda vygeneruje výjimku. Pokud ale nastavíte SelectCommand vlastnost zprostředkovatele dat rozhraní .NET Framework, můžete vytvořit SqlCommandBuilder objekt nebo OleDbCommandBuilder pro automatické generování příkazů 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 DataSetbyly v souboru . Další informace najdete v tématu Generování příkazů pomocí CommandBuilders.

Metoda Update načte řádky z tabulky uvedené v prvním mapování před provedením aktualizace. Potom Update aktualizuje řádek pomocí hodnoty UpdatedRowSource vlastnosti. Všechny další vrácené řádky budou ignorovány.

Po načtení všech dat zpět do DataSet, OnRowUpdated se vyvolá událost, 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í provedení následující:

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

  2. Událost OnRowUpdating je vyvolána.

  3. Příkaz se spustí.

  4. Pokud je příkaz nastavený na FirstReturnedRecordhodnotu , 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. Volá se AcceptChanges.

Každý příkaz přidružený k DbDataAdapter příkazu má obvykle přidruženou kolekci parametrů. Parametry jsou mapovány na aktuální řádek prostřednictvím SourceColumn vlastností a SourceVersion třídy zprostředkovatele Parameter dat rozhraní .NET Framework. SourceColumn odkazuje na DataTable sloupec, který DbDataAdapter odkazuje na získání hodnot parametrů pro aktuální řádek.

SourceColumn odkazuje na název nenamapovaného sloupce před tím, než se použije mapování tabulek. Pokud SourceColumn odkazuje na neexistující sloupec, akce závisí na jedné z následujících MissingMappingAction hodnot.

Výčtová hodnota Akce byla provedena
MissingMappingAction.Passthrough Pokud není k dispozici žádné mapování, použijte názvy zdrojových sloupců a názvy DataSet tabulek.
MissingMappingAction.Ignore Vygeneruje SystemException se . Když jsou mapování explicitně nastavena, chybějící mapování vstupního parametru je obvykle výsledkem chyby.
MissingMappingAction.Error Vygeneruje SystemException se .

Vlastnost SourceColumn se také používá 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.

Vlastnost SourceVersion třídy zprostředkovatele Parameter dat rozhraní .NET Framework určuje, zda se má použít původní, aktuální 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 narušení optimistické souběžnosti.

Poznámka

Pokud při aktualizaci řádku dojde k chybě, vyvolá se výjimka a provádění aktualizace se ukončí. Pokud chcete pokračovat v operaci aktualizace bez generování výjimek při výskytu chyby, nastavte vlastnost před true voláním ContinueUpdateOnErrorUpdatena hodnotu . Můžete také reagovat na chyby pro jednotlivé řádky v rámci RowUpdated události DataAdapter. Pokud chcete pokračovat v operaci aktualizace bez generování výjimky v rámci RowUpdated události, nastavte Status vlastnost vlastnosti RowUpdatedEventArgs na Continue.

Viz také

Platí pro

Update(DataRow[])

Aktualizace 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 objektu 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ů sloužících k aktualizaci zdroje dat.

Návraty

Počet řádků, které se úspěšně aktualizovaly z objektu DataSet.

Výjimky

Hodnota DataSet je neplatná.

Zdrojová tabulka je neplatná.

Neexistuje DataRow žádná aktualizace.

-nebo-

Neexistuje DataTable žádná aktualizace.

-nebo-

Neexistuje DataSet žádný zdroj, který by se použil jako zdroj.

Při pokusu o spuštění příkazu INSERT, UPDATE nebo DELETE došlo k nulovému ovlivnění záznamů.

Příklady

Následující příklad používá k aktualizaci zdroje dat odvozenou třídu OleDbDataAdapter, .

public DataSet CreateCmdsAndUpdate(string connectionString,
    string queryString)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

        connection.Open();

        DataSet customers = new DataSet();
        adapter.Fill(customers);

        //code to modify data in dataset here

        //Insert new records from DataSet
        DataRow[] rows = customers.Tables[0].Select(
            null, null, DataViewRowState.Added);
        adapter.Update(rows);

        return customers;
    }
}
Public Function CreateCmdsAndUpdate(ByVal connectionString As String, _
    ByVal queryString As String) As DataSet

    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter()
        adapter.SelectCommand = New OleDbCommand(queryString, connection)
        Dim builder As New OleDbCommandBuilder(adapter)

        connection.Open()

        Dim customers As New DataSet()
        adapter.Fill(customers)

        ' Code to modify data in DataSet here 

        ' Insert new records from DataSet
        Dim rows() As DataRow = customers.Tables(0).Select( _
            Nothing, Nothing, DataViewRowState.Added)
        adapter.Update(rows)

        Return customers
    End Using
End Function

Poznámky

Když aplikace volá metodu Update , DbDataAdapter prozkoumá RowState vlastnost a spustí požadované příkazy INSERT, UPDATE nebo DELETE iterativním způsobem pro každý řádek v závislosti na pořadí indexů nakonfigurovaných v objektu DataSet. Může například Update spustit příkaz DELETE následovaný příkazem INSERT a pak dalším příkazem DELETE kvůli seřazení řádků v objektu 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 metodu GetChanges v situacích, kdy musíte řídit sekvenci typů příkazů (například INSERTs před UPDATEs). Další informace najdete v tématu Aktualizace zdrojů dat pomocí objektů DataAdapter.

Pokud příkazy INSERT, UPDATE nebo DELETE nebyly zadány, Update metoda vygeneruje výjimku. Pokud ale nastavíte SelectCommand vlastnost zprostředkovatele dat rozhraní .NET Framework, můžete vytvořit SqlCommandBuilder objekt nebo OleDbCommandBuilder pro automatické generování příkazů 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 DataSetbyly v souboru . Další informace najdete v tématu Generování příkazů pomocí CommandBuilders.

Metoda Update načte řádky z tabulky uvedené v prvním mapování před provedením aktualizace. Potom Update aktualizuje řádek pomocí hodnoty UpdatedRowSource vlastnosti. Všechny další vrácené řádky budou ignorovány.

Po načtení všech dat zpět do DataSet, OnRowUpdated se vyvolá událost, 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í provedení následující:

  1. Hodnoty v souboru se přesunou DataRow 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. Volá se AcceptChanges.

Každý příkaz přidružený k DbDataAdapter příkazu má obvykle přidruženou kolekci parametrů. Parametry jsou mapovány na aktuální řádek prostřednictvím SourceColumn vlastností a SourceVersion třídy zprostředkovatele Parameter dat rozhraní .NET Framework. SourceColumn odkazuje na DataTable sloupec, který DbDataAdapter odkazuje na získání hodnot parametrů pro aktuální řádek.

SourceColumn odkazuje na název nenamapovaného sloupce před tím, než se použije mapování tabulek. Pokud SourceColumn odkazuje na neexistující sloupec, akce závisí na jedné z následujících MissingMappingAction hodnot.

Výčtová hodnota Akce byla provedena
MissingMappingAction.Passthrough Pokud není k dispozici žádné mapování, použijte názvy zdrojových sloupců a názvy DataSet tabulek.
MissingMappingAction.Ignore Vygeneruje SystemException se . Když jsou mapování explicitně nastavena, chybějící mapování vstupního parametru je obvykle výsledkem chyby.
MissingMappingAction.Error Vygeneruje SystemException se .

Vlastnost SourceColumn se také používá 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.

Vlastnost SourceVersion třídy zprostředkovatele Parameter dat rozhraní .NET Framework určuje, zda se má použít původní, aktuální 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 narušení optimistické souběžnosti.

Poznámka

Pokud při aktualizaci řádku dojde k chybě, vyvolá se výjimka a provádění aktualizace se ukončí. Pokud chcete pokračovat v operaci aktualizace bez generování výjimek při výskytu chyby, nastavte vlastnost před true voláním ContinueUpdateOnErrorUpdatena hodnotu . Můžete také reagovat na chyby pro jednotlivé řádky v rámci RowUpdated události DataAdapter. Pokud chcete pokračovat v operaci aktualizace bez generování výjimky v rámci RowUpdated události, nastavte Status vlastnost vlastnosti RowUpdatedEventArgs na Continue.

Viz také

Platí pro