IDataAdapter.Update(DataSet) Metoda

Definice

Volá příslušné příkazy INSERT, UPDATE nebo DELETE pro každý vložený, aktualizovaný nebo odstraněný řádek v zadaném DataSet řádku z pojmenované DataTable tabulky.

public:
 int Update(System::Data::DataSet ^ dataSet);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public int Update(System.Data.DataSet dataSet);
public int Update(System.Data.DataSet dataSet);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
abstract member Update : System.Data.DataSet -> int
abstract member Update : System.Data.DataSet -> int
Public 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.

Atributy

Výjimky

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, ke Update zdroji dat. Tento příklad předpokládá, že jste vytvořili a OleDbDataAdapterDataSet.

static private DataSet CreateCommandAndUpdate(
    string connectionString,
    string queryString)
{
    DataSet dataSet = new DataSet();

    using (OleDbConnection connection =
               new OleDbConnection(connectionString))
    {
        connection.Open();
        OleDbDataAdapter adapter =
            new OleDbDataAdapter();
        adapter.SelectCommand =
            new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder =
            new OleDbCommandBuilder(adapter);

        adapter.Fill(dataSet);

        // Code to modify data in the DataSet here.

        // Without the OleDbCommandBuilder, this line would fail.
        adapter.UpdateCommand = builder.GetUpdateCommand();
        adapter.Update(dataSet);
    }
    return dataSet;
}
Public Function CreateCommandAndUpdate( _
    ByVal connectionString As String, _
    ByVal queryString As String) As DataSet

    Dim dataSet As New DataSet()

    Using connection As New OleDbConnection(connectionString)
        connection.Open()
        Dim adapter As New OleDbDataAdapter()

        adapter.SelectCommand = New OleDbCommand( _
            queryString, connection)

        Dim builder As OleDbCommandBuilder = _
            New OleDbCommandBuilder(adapter)

        adapter.Fill(dataSet)

        ' Code to modify the data in the DataSet here. 

        ' Without the OleDbCommandBuilder this line would fail.
        builder.GetUpdateCommand()
        adapter.Update(dataSet)
    End Using
    Return dataSet
End Function

Poznámky

Když aplikace volá Update metodu, IDataAdapter 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. Může například Update spustit příkaz DELETE, následovaný příkazem INSERT a dalším příkazem DELETE, protože pořadí řádků v sadě DataTable.

Mějte na paměti, že tyto příkazy nejsou prováděny jako dávkové procesy; každý řádek se aktualizuje jednotlivě. Aplikace může volat metodu GetChanges , pokud 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 SqlCommandBuilder vlastnost zprostředkovatele dat rozhraní .NET Framework, můžete vytvořit OleDbCommandBuilder nebo SelectCommand objekt, který automaticky vygeneruje příkazy SQL pro aktualizace s jednou tabulkou. Pak 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řítomny v objektu 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í. Potom Update aktualizuje řádek pomocí hodnoty UpdatedRowSource vlastnosti. 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 první vrácený výsledek se vloží do DataRow.

  5. Pokud existují výstupní parametry, jsou vloženy do DataRowsouboru .

  6. Událost OnRowUpdated je vyvolána.

  7. AcceptChanges se volá.

Každý příkaz přidružený k IDataAdapter obvykle má přidruženou kolekci parametrů. Parametry se mapují na aktuální řádek prostřednictvím SourceColumn vlastností SourceVersion třídy zprostředkovatele Parameter dat rozhraní .NET Framework. SourceColumn odkazuje na sloupec DataTable, na který IDataAdapter 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 Provedená 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. Když jsou mapování explicitně nastavena, chybějící mapování vstupního parametru je obvykle způsobeno chybou.
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.

Vlastnost SourceVersion zprostředkovatele Parameter dat rozhraní .NET Framework určuje, zda se má použít Original, Currentnebo Proposed 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.

Note

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.

Platí pro