Sdílet prostřednictvím


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

Slouží DataSet k aktualizaci zdroje dat.

Návraty

Počet řádků se úspěšně aktualizoval z objektu 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á metodu Update , IDataAdapter prozkoumá RowState vlastnost a spustí požadované příkazy INSERT, UPDATE nebo DELETE iterativní pro každý řádek na základě pořadí indexů nakonfigurovaných v sadě 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 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 nebo OleDbCommandBuilder 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 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 se ignorují.

Po načtení všech dat zpět do DataSet, OnRowUpdated událost je vyvolána, což uživateli umožní zkontrolovat odsouhlasené DataSet řádky 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 objektu DataRow jsou přesunuty 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 DataTable sloupec, který IDataAdapter odkazuje na získání hodnot parametrů pro aktuální řádek.

SourceColumn odkazuje na název nemapovaného sloupce před provedením 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 DataSet tabulek.
MissingMappingAction.Ignore Vygeneruje se A SystemException . Když jsou mapování explicitně nastavena, chybějící mapování vstupního parametru je obvykle způsobeno chybou.
MissingMappingAction.Error Vygeneruje se A SystemException .

Vlastnost SourceColumn se také používá k mapování hodnoty pro výstupní nebo vstupní/výstupní parametry zpět na DataSethodnotu . 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.

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 ContinueUpdateOnError vlastnost před true voláním Update. Můžete také reagovat na chyby na základě jednotlivých řádků v RowUpdated rámci události DataAdapter. Chcete-li pokračovat v operaci aktualizace bez generování výjimky v rámci RowUpdated události, nastavte Status vlastnost RowUpdatedEventArgs na Continuehodnotu .

Platí pro