DbDataAdapter.Update Metod

Definition

Uppdaterar värdena i databasen genom att köra respektive INSERT-, UPDATE- eller DELETE-instruktioner för varje infogad, uppdaterad eller borttagen DataSetrad i .

Överlagringar

Name Description
Update(DataSet, String)

Uppdaterar värdena i databasen genom att köra respektive INSERT-, UPDATE- eller DELETE-instruktioner för varje infogad, uppdaterad eller borttagen DataSet rad i med det angivna DataTable namnet.

Update(DataRow[], DataTableMapping)

Uppdaterar värdena i databasen genom att köra respektive INSERT-, UPDATE- eller DELETE-instruktioner för varje infogad, uppdaterad eller borttagen rad i den angivna matrisen med DataRow objekt.

Update(DataTable)

Uppdaterar värdena i databasen genom att köra respektive INSERT-, UPDATE- eller DELETE-instruktioner för varje infogad, uppdaterad eller borttagen rad i den angivna DataTable.

Update(DataSet)

Uppdaterar värdena i databasen genom att köra respektive INSERT-, UPDATE- eller DELETE-instruktioner för varje infogad, uppdaterad eller borttagen rad i den angivna DataSet.

Update(DataRow[])

Uppdaterar värdena i databasen genom att köra respektive INSERT-, UPDATE- eller DELETE-instruktioner för varje infogad, uppdaterad eller borttagen rad i den angivna matrisen DataSeti .

Update(DataSet, String)

Uppdaterar värdena i databasen genom att köra respektive INSERT-, UPDATE- eller DELETE-instruktioner för varje infogad, uppdaterad eller borttagen DataSet rad i med det angivna DataTable namnet.

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

Parametrar

dataSet
DataSet

Att DataSet använda för att uppdatera datakällan.

srcTable
String

Namnet på källtabellen som ska användas för tabellmappning.

Returer

Antalet rader har uppdaterats från DataSet.

Undantag

Källtabellen är ogiltig.

Ett försök att köra en INSERT-, UPDATE- eller DELETE-instruktion resulterade i att inga poster påverkades.

Exempel

I följande exempel används den härledda klassen , OleDbDataAdapterför att uppdatera datakällan.

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

Kommentarer

När ett program anropar UpdateRowState metoden DbDataAdapter undersöker egenskapen och kör nödvändiga INSERT-, UPDATE- eller DELETE-instruktioner iterativt för varje rad, baserat på ordningen på indexen som konfigurerats i DataSet. Du kan till exempel Update köra en DELETE-instruktion följt av en INSERT-instruktion och sedan en annan DELETE-instruktion på grund av ordningen på raderna DataTablei .

Det bör noteras att dessa instruktioner inte utförs som en batchprocess. varje rad uppdateras individuellt. Ett program kan anropa GetChanges metoden i situationer där du måste styra sekvensen med instruktionstyper (till exempel INSERT före UPDATE). Mer information finns i Uppdatera datakällor med DataAdapters.

Om INSERT-, UPDATE- eller DELETE-instruktioner inte har angetts Update genererar metoden ett undantag. Du kan dock skapa ett SqlCommandBuilder- eller OleDbCommandBuilder-objekt för att automatiskt generera SQL-instruktioner för uppdateringar med en tabell om du anger egenskapen SelectCommand för en .NET Framework-dataprovider. Sedan genereras eventuella ytterligare SQL-instruktioner som du inte anger av CommandBuilder. Den här generationslogik kräver att information om nyckelkolumner DataSetfinns i . Mer information finns i Generera kommandon med CommandBuilders.

Metoden Update stöder scenarier där DataSet innehåller flera DataTable objekt vars namn endast skiljer sig åt från fall till fall. När flera tabeller med samma namn, men olika fall, finns i , DataSetUpdate utför en skiftlägeskänslig jämförelse för att hitta motsvarande tabell och genererar ett undantag om det inte finns någon exakt matchning. Följande C#-kod illustrerar det här beteendet.

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.

Om Update anropas och DataSet innehåller endast en DataTable vars namn endast skiljer sig åt från fall till fall uppdateras det DataTable . I det här scenariot är jämförelsen skiftlägesokänslig. Följande C#-kod illustrerar det här beteendet.

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.

Metoden Update hämtar rader från tabellen som anges i den första mappningen innan en uppdatering utförs. Sedan Update uppdateras raden med egenskapens UpdatedRowSource värde. Eventuella ytterligare rader som returneras ignoreras.

När alla data har lästs in i DataSetOnRowUpdated utlöses händelsen så att användaren kan inspektera den avstämda DataSet raden och eventuella utdataparametrar som returneras av kommandot. När en rad har uppdaterats godkänns ändringarna i den raden.

När du använder Updateär körningsordningen följande:

  1. Värdena i DataRow flyttas till parametervärdena.

  2. Händelsen OnRowUpdating aktiveras.

  3. Kommandot körs.

  4. Om kommandot är inställt på FirstReturnedRecordplaceras det första returnerade resultatet i DataRow.

  5. Om det finns utdataparametrar placeras de i DataRow.

  6. Händelsen OnRowUpdated aktiveras.

  7. AcceptChanges kallas.

Varje kommando som är associerat med DbDataAdapter har vanligtvis en parametersamling associerad med den. Parametrar mappas till den aktuella raden via egenskaperna SourceColumn och SourceVersion för en .NET Framework-dataproviderns klass Parameter. SourceColumn refererar till en DataTable kolumn som DbDataAdapter refererar till för att hämta parametervärden för den aktuella raden.

SourceColumn refererar till det ommappade kolumnnamnet innan några tabellmappningar har tillämpats. Om SourceColumn refererar till en obefintlig kolumn beror den åtgärd som vidtas på något av följande MissingMappingAction värden.

Uppräkningsvärde Åtgärder som vidtagits
MissingMappingAction.Passthrough Använd källkolumnnamnen och tabellnamnen i om DataSet ingen mappning finns.
MissingMappingAction.Ignore A SystemException genereras. När mappningarna uttryckligen anges är en mappning som saknas för en indataparameter vanligtvis resultatet av ett fel.
MissingMappingAction.Error A SystemException genereras.

Egenskapen SourceColumn används också för att mappa värdet för utdata- eller indata-/utdataparametrar tillbaka till DataSet. Ett undantag genereras om det refererar till en obefintlig kolumn.

Egenskapen SourceVersion för en .NET Framework-dataproviderns klass Parameter avgör om du vill använda kolumnvärdets originalversion, aktuella eller föreslagna version. Den här funktionen används ofta för att inkludera ursprungliga värden i WHERE-satsen i en UPDATE-instruktion för att söka efter optimistiska samtidighetsöverträdelser.

Note

Om ett fel uppstår när en rad uppdateras utlöses ett undantag och körningen av uppdateringen avbryts. Om du vill fortsätta uppdateringsåtgärden utan att generera undantag när ett fel påträffas anger du ContinueUpdateOnError egenskapen till true innan du anropar Update. Du kan också svara på fel per rad i RowUpdated händelse av en DataAdapter. Om du vill fortsätta uppdateringsåtgärden RowUpdated utan att generera ett undantag i händelsen anger du Status egenskapen RowUpdatedEventArgs för till Continue.

Se även

Gäller för

Update(DataRow[], DataTableMapping)

Uppdaterar värdena i databasen genom att köra respektive INSERT-, UPDATE- eller DELETE-instruktioner för varje infogad, uppdaterad eller borttagen rad i den angivna matrisen med 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

Parametrar

dataRows
DataRow[]

En matris med DataRow objekt som används för att uppdatera datakällan.

tableMapping
DataTableMapping

Samlingen som TableMappings ska användas.

Returer

Antalet rader som har uppdaterats från matrisen med DataRow objekt.

Undantag

Källtabellen är ogiltig.

Det finns inget DataRow att uppdatera.

-eller-

Det finns inget DataTable att uppdatera.

-eller-

Det finns inget DataSet att använda som källa.

Ett försök att köra en INSERT-, UPDATE- eller DELETE-instruktion resulterade i att inga poster påverkades.

Kommentarer

När ett program anropar UpdateRowState metoden DbDataAdapter undersöker egenskapen och kör nödvändiga INSERT-, UPDATE- eller DELETE-instruktioner iterativt för varje rad, baserat på ordningen på indexen som konfigurerats i DataSet. Du kan till exempel Update köra en DELETE-instruktion följt av en INSERT-instruktion och sedan en annan DELETE-instruktion på grund av ordningen på raderna DataTablei .

Det bör noteras att dessa instruktioner inte utförs som en batchprocess. varje rad uppdateras individuellt. Ett program kan anropa GetChanges metoden i situationer där du måste styra sekvensen med instruktionstyper (till exempel INSERT före UPDATEs). Mer information finns i Uppdatera datakällor med DataAdapters.

Om INSERT-, UPDATE- eller DELETE-instruktioner inte har angetts Update genererar metoden ett undantag. Du kan dock skapa ett SqlCommandBuilder- eller OleDbCommandBuilder-objekt för att automatiskt generera SQL-instruktioner för uppdateringar med en tabell om du anger egenskapen SelectCommand för en .NET Framework-dataprovider. Sedan genereras eventuella ytterligare SQL-instruktioner som du inte anger av CommandBuilder. Den här generationslogik kräver att information om nyckelkolumner DataSetfinns i . Mer information finns i Generera kommandon med CommandBuilders.

Metoden Update hämtar rader från tabellen som anges i den första mappningen innan en uppdatering utförs. Sedan Update uppdateras raden med egenskapens UpdatedRowSource värde. Eventuella ytterligare rader som returneras ignoreras.

När alla data har lästs in i DataSetOnRowUpdated utlöses händelsen så att användaren kan inspektera den avstämda DataSet raden och eventuella utdataparametrar som returneras av kommandot. När en rad har uppdaterats godkänns ändringarna i den raden.

När du använder Updateär körningsordningen följande:

  1. Värdena i DataRow flyttas till parametervärdena.

  2. Händelsen OnRowUpdating aktiveras.

  3. Kommandot körs.

  4. Om kommandot är inställt på FirstReturnedRecordplaceras det första returnerade resultatet i DataRow.

  5. Om det finns utdataparametrar placeras de i DataRow.

  6. Händelsen OnRowUpdated aktiveras.

  7. AcceptChanges kallas.

Varje kommando som är associerat med DbDataAdapter har vanligtvis en parametersamling associerad med den. Parametrar mappas till den aktuella raden via egenskaperna SourceColumn och SourceVersion för en .NET Framework-dataproviderns klass Parameter. SourceColumn refererar till en DataTable kolumn som DbDataAdapter refererar till för att hämta parametervärden för den aktuella raden.

SourceColumn refererar till det ommappade kolumnnamnet innan några tabellmappningar har tillämpats. Om SourceColumn refererar till en obefintlig kolumn beror den åtgärd som vidtas på något av följande MissingMappingAction värden.

Uppräkningsvärde Åtgärder som vidtagits
MissingMappingAction.Passthrough Använd källkolumnnamnen och tabellnamnen i om DataSet ingen mappning finns.
MissingMappingAction.Ignore A SystemException genereras. När mappningarna uttryckligen anges är en mappning som saknas för en indataparameter vanligtvis resultatet av ett fel.
MissingMappingAction.Error A SystemException genereras.

Egenskapen SourceColumn används också för att mappa värdet för utdata- eller indata-/utdataparametrar tillbaka till DataSet. Ett undantag genereras om det refererar till en obefintlig kolumn.

Egenskapen SourceVersion för en .NET Framework-dataproviderns klass Parameter avgör om du vill använda kolumnvärdets originalversion, aktuella eller föreslagna version. Den här funktionen används ofta för att inkludera ursprungliga värden i WHERE-satsen i en UPDATE-instruktion för att söka efter optimistiska samtidighetsöverträdelser.

Note

Om ett fel uppstår när en rad uppdateras utlöses ett undantag och körningen av uppdateringen avbryts. Om du vill fortsätta uppdateringsåtgärden utan att generera undantag när ett fel påträffas anger du ContinueUpdateOnError egenskapen till true innan du anropar Update. Du kan också svara på fel per rad i RowUpdated händelse av en DataAdapter. Om du vill fortsätta uppdateringsåtgärden RowUpdated utan att generera ett undantag i händelsen anger du Status egenskapen RowUpdatedEventArgs för till Continue.

Se även

Gäller för

Update(DataTable)

Uppdaterar värdena i databasen genom att köra respektive INSERT-, UPDATE- eller DELETE-instruktioner för varje infogad, uppdaterad eller borttagen rad i den angivna 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

Parametrar

dataTable
DataTable

Används DataTable för att uppdatera datakällan.

Returer

Antalet rader har uppdaterats från DataTable.

Undantag

Källtabellen är ogiltig.

Det finns inget DataRow att uppdatera.

-eller-

Det finns inget DataTable att uppdatera.

-eller-

Det finns inget DataSet att använda som källa.

Ett försök att köra en INSERT-, UPDATE- eller DELETE-instruktion resulterade i att inga poster påverkades.

Exempel

I följande exempel används den härledda klassen , OleDbDataAdapterför att uppdatera datakällan.

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

Kommentarer

När ett program anropar UpdateRowState metoden DbDataAdapter undersöker egenskapen och kör nödvändiga INSERT-, UPDATE- eller DELETE-instruktioner iterativt för varje rad, baserat på ordningen på indexen som konfigurerats i DataSet. Du kan till exempel Update köra en DELETE-instruktion följt av en INSERT-instruktion och sedan en annan DELETE-instruktion på grund av ordningen på raderna DataTablei .

Det bör noteras att dessa instruktioner inte utförs som en batchprocess. varje rad uppdateras individuellt. Ett program kan anropa GetChanges metoden i situationer där du måste styra sekvensen med instruktionstyper (till exempel INSERT före UPDATEs). Mer information finns i Uppdatera datakällor med DataAdapters.

Om INSERT-, UPDATE- eller DELETE-instruktioner inte har angetts Update genererar metoden ett undantag. Du kan dock skapa ett SqlCommandBuilder- eller OleDbCommandBuilder-objekt för att automatiskt generera SQL-instruktioner för uppdateringar med en tabell om du anger egenskapen SelectCommand för en .NET Framework-dataprovider. Sedan genereras eventuella ytterligare SQL-instruktioner som du inte anger av CommandBuilder. Den här generationslogik kräver att information om nyckelkolumner DataSetfinns i . Mer information finns i Generera kommandon med CommandBuilders.

Metoden Update hämtar rader från tabellen som anges i den första mappningen innan en uppdatering utförs. Sedan Update uppdateras raden med egenskapens UpdatedRowSource värde. Eventuella ytterligare rader som returneras ignoreras.

När alla data har lästs in i DataSetOnRowUpdated utlöses händelsen så att användaren kan inspektera den avstämda DataSet raden och eventuella utdataparametrar som returneras av kommandot. När en rad har uppdaterats godkänns ändringarna i den raden.

När du använder Updateär körningsordningen följande:

  1. Värdena i DataRow flyttas till parametervärdena.

  2. Händelsen OnRowUpdating aktiveras.

  3. Kommandot körs.

  4. Om kommandot är inställt på FirstReturnedRecordplaceras det första returnerade resultatet i DataRow.

  5. Om det finns utdataparametrar placeras de i DataRow.

  6. Händelsen OnRowUpdated aktiveras.

  7. AcceptChanges kallas.

Varje kommando som är associerat med DbDataAdapter har vanligtvis en parametersamling associerad med den. Parametrar mappas till den aktuella raden via egenskaperna SourceColumn och SourceVersion för en .NET Framework-dataproviderns klass Parameter. SourceColumn refererar till en DataTable kolumn som DbDataAdapter refererar till för att hämta parametervärden för den aktuella raden.

SourceColumn refererar till det ommappade kolumnnamnet innan några tabellmappningar har tillämpats. Om SourceColumn refererar till en obefintlig kolumn beror den åtgärd som vidtas på något av följande MissingMappingAction värden.

Uppräkningsvärde Åtgärder som vidtagits
MissingMappingAction.Passthrough Använd källkolumnnamnen och tabellnamnen i om DataSet ingen mappning finns.
MissingMappingAction.Ignore A SystemException genereras. När mappningarna uttryckligen anges är en mappning som saknas för en indataparameter vanligtvis resultatet av ett fel.
MissingMappingAction.Error A SystemException genereras.

Egenskapen SourceColumn används också för att mappa värdet för utdata- eller indata-/utdataparametrar tillbaka till DataSet. Ett undantag genereras om det refererar till en obefintlig kolumn.

Egenskapen SourceVersion för en .NET Framework-dataproviderns klass Parameter avgör om du vill använda kolumnvärdets originalversion, aktuella eller föreslagna version. Den här funktionen används ofta för att inkludera ursprungliga värden i WHERE-satsen i en UPDATE-instruktion för att söka efter optimistiska samtidighetsöverträdelser.

Note

Om ett fel uppstår när en rad uppdateras utlöses ett undantag och körningen av uppdateringen avbryts. Om du vill fortsätta uppdateringsåtgärden utan att generera undantag när ett fel påträffas anger du ContinueUpdateOnError egenskapen till true innan du anropar Update. Du kan också svara på fel per rad i RowUpdated händelse av en DataAdapter. Om du vill fortsätta uppdateringsåtgärden RowUpdated utan att generera ett undantag i händelsen anger du Status egenskapen RowUpdatedEventArgs för till Continue.

Se även

Gäller för

Update(DataSet)

Uppdaterar värdena i databasen genom att köra respektive INSERT-, UPDATE- eller DELETE-instruktioner för varje infogad, uppdaterad eller borttagen rad i den angivna 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

Parametrar

dataSet
DataSet

Används DataSet för att uppdatera datakällan.

Returer

Antalet rader har uppdaterats från DataSet.

Implementeringar

Undantag

Källtabellen är ogiltig.

Ett försök att köra en INSERT-, UPDATE- eller DELETE-instruktion resulterade i att inga poster påverkades.

Exempel

I följande exempel används den härledda klassen , OleDbDataAdapterför att uppdatera datakällan.

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

Kommentarer

När ett program anropar UpdateRowState metoden DbDataAdapter undersöker egenskapen och kör nödvändiga INSERT-, UPDATE- eller DELETE-instruktioner iterativt för varje rad, baserat på ordningen på indexen som konfigurerats i DataSet. Du kan till exempel Update köra en DELETE-instruktion följt av en INSERT-instruktion och sedan en annan DELETE-instruktion på grund av ordningen på raderna DataTablei .

Det bör noteras att dessa instruktioner inte utförs som en batchprocess. varje rad uppdateras individuellt. Ett program kan anropa GetChanges metoden i situationer där du måste styra sekvensen med instruktionstyper (till exempel INSERT före UPDATEs). Mer information finns i Uppdatera datakällor med DataAdapters.

Om INSERT-, UPDATE- eller DELETE-instruktioner inte har angetts Update genererar metoden ett undantag. Du kan dock skapa ett SqlCommandBuilder- eller OleDbCommandBuilder-objekt för att automatiskt generera SQL-instruktioner för uppdateringar med en tabell om du anger egenskapen SelectCommand för en .NET Framework-dataprovider. Sedan genereras eventuella ytterligare SQL-instruktioner som du inte anger av CommandBuilder. Den här generationslogik kräver att information om nyckelkolumner DataSetfinns i . Mer information finns i Generera kommandon med CommandBuilders.

Metoden Update hämtar rader från tabellen som anges i den första mappningen innan en uppdatering utförs. Sedan Update uppdateras raden med egenskapens UpdatedRowSource värde. Eventuella ytterligare rader som returneras ignoreras.

När alla data har lästs in i DataSetOnRowUpdated utlöses händelsen så att användaren kan inspektera den avstämda DataSet raden och eventuella utdataparametrar som returneras av kommandot. När en rad har uppdaterats godkänns ändringarna i den raden.

När du använder Updateär körningsordningen följande:

  1. Värdena i DataRow flyttas till parametervärdena.

  2. Händelsen OnRowUpdating aktiveras.

  3. Kommandot körs.

  4. Om kommandot är inställt på FirstReturnedRecordplaceras det första returnerade resultatet i DataRow.

  5. Om det finns utdataparametrar placeras de i DataRow.

  6. Händelsen OnRowUpdated aktiveras.

  7. AcceptChanges kallas.

Varje kommando som är associerat med DbDataAdapter har vanligtvis en parametersamling associerad med den. Parametrar mappas till den aktuella raden via egenskaperna SourceColumn och SourceVersion för en .NET Framework-dataproviderns klass Parameter. SourceColumn refererar till en DataTable kolumn som DbDataAdapter refererar till för att hämta parametervärden för den aktuella raden.

SourceColumn refererar till det ommappade kolumnnamnet innan några tabellmappningar har tillämpats. Om SourceColumn refererar till en obefintlig kolumn beror den åtgärd som vidtas på något av följande MissingMappingAction värden.

Uppräkningsvärde Åtgärder som vidtagits
MissingMappingAction.Passthrough Använd källkolumnnamnen och tabellnamnen i om DataSet ingen mappning finns.
MissingMappingAction.Ignore A SystemException genereras. När mappningarna uttryckligen anges är en mappning som saknas för en indataparameter vanligtvis resultatet av ett fel.
MissingMappingAction.Error A SystemException genereras.

Egenskapen SourceColumn används också för att mappa värdet för utdata- eller indata-/utdataparametrar tillbaka till DataSet. Ett undantag genereras om det refererar till en obefintlig kolumn.

Egenskapen SourceVersion för en .NET Framework-dataproviderns klass Parameter avgör om du vill använda kolumnvärdets originalversion, aktuella eller föreslagna version. Den här funktionen används ofta för att inkludera ursprungliga värden i WHERE-satsen i en UPDATE-instruktion för att söka efter optimistiska samtidighetsöverträdelser.

Note

Om ett fel uppstår när en rad uppdateras utlöses ett undantag och körningen av uppdateringen avbryts. Om du vill fortsätta uppdateringsåtgärden utan att generera undantag när ett fel påträffas anger du ContinueUpdateOnError egenskapen till true innan du anropar Update. Du kan också svara på fel per rad i RowUpdated händelse av en DataAdapter. Om du vill fortsätta uppdateringsåtgärden RowUpdated utan att generera ett undantag i händelsen anger du Status egenskapen RowUpdatedEventArgs för till Continue.

Se även

Gäller för

Update(DataRow[])

Uppdaterar värdena i databasen genom att köra respektive INSERT-, UPDATE- eller DELETE-instruktioner för varje infogad, uppdaterad eller borttagen rad i den angivna matrisen DataSeti .

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

Parametrar

dataRows
DataRow[]

En matris med DataRow objekt som används för att uppdatera datakällan.

Returer

Antalet rader har uppdaterats från DataSet.

Undantag

Källtabellen är ogiltig.

Det finns inget DataRow att uppdatera.

-eller-

Det finns inget DataTable att uppdatera.

-eller-

Det finns inget DataSet att använda som källa.

Ett försök att köra en INSERT-, UPDATE- eller DELETE-instruktion resulterade i att inga poster påverkades.

Exempel

I följande exempel används den härledda klassen , OleDbDataAdapterför att uppdatera datakällan.

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

Kommentarer

När ett program anropar UpdateRowState metoden DbDataAdapter undersöker egenskapen och kör nödvändiga INSERT-, UPDATE- eller DELETE-instruktioner iterativt för varje rad, baserat på ordningen på indexen som konfigurerats i DataSet. Du kan till exempel Update köra en DELETE-instruktion följt av en INSERT-instruktion och sedan en annan DELETE-instruktion på grund av ordningen på raderna DataTablei .

Det bör noteras att dessa instruktioner inte utförs som en batchprocess. varje rad uppdateras individuellt. Ett program kan anropa GetChanges metoden i situationer där du måste styra sekvensen med instruktionstyper (till exempel INSERT före UPDATEs). Mer information finns i Uppdatera datakällor med DataAdapters.

Om INSERT-, UPDATE- eller DELETE-instruktioner inte har angetts Update genererar metoden ett undantag. Du kan dock skapa ett SqlCommandBuilder- eller OleDbCommandBuilder-objekt för att automatiskt generera SQL-instruktioner för uppdateringar med en tabell om du anger egenskapen SelectCommand för en .NET Framework-dataprovider. Sedan genereras eventuella ytterligare SQL-instruktioner som du inte anger av CommandBuilder. Den här generationslogik kräver att information om nyckelkolumner DataSetfinns i . Mer information finns i Generera kommandon med CommandBuilders.

Metoden Update hämtar rader från tabellen som anges i den första mappningen innan en uppdatering utförs. Sedan Update uppdateras raden med egenskapens UpdatedRowSource värde. Eventuella ytterligare rader som returneras ignoreras.

När alla data har lästs in i DataSetOnRowUpdated utlöses händelsen så att användaren kan inspektera den avstämda DataSet raden och eventuella utdataparametrar som returneras av kommandot. När en rad har uppdaterats godkänns ändringarna i den raden.

När du använder Updateär körningsordningen följande:

  1. Värdena i DataRow flyttas till parametervärdena.

  2. Händelsen OnRowUpdating aktiveras.

  3. Kommandot körs.

  4. Om kommandot är inställt på FirstReturnedRecordplaceras det första returnerade resultatet i DataRow.

  5. Om det finns utdataparametrar placeras de i DataRow.

  6. Händelsen OnRowUpdated aktiveras.

  7. AcceptChanges kallas.

Varje kommando som är associerat med DbDataAdapter har vanligtvis en parametersamling associerad med den. Parametrar mappas till den aktuella raden via egenskaperna SourceColumn och SourceVersion för en .NET Framework-dataproviderns klass Parameter. SourceColumn refererar till en DataTable kolumn som DbDataAdapter refererar till för att hämta parametervärden för den aktuella raden.

SourceColumn refererar till det ommappade kolumnnamnet innan några tabellmappningar har tillämpats. Om SourceColumn refererar till en obefintlig kolumn beror den åtgärd som vidtas på något av följande MissingMappingAction värden.

Uppräkningsvärde Åtgärder som vidtagits
MissingMappingAction.Passthrough Använd källkolumnnamnen och tabellnamnen i om DataSet ingen mappning finns.
MissingMappingAction.Ignore A SystemException genereras. När mappningarna uttryckligen anges är en mappning som saknas för en indataparameter vanligtvis resultatet av ett fel.
MissingMappingAction.Error A SystemException genereras.

Egenskapen SourceColumn används också för att mappa värdet för utdata- eller indata-/utdataparametrar tillbaka till DataSet. Ett undantag genereras om det refererar till en obefintlig kolumn.

Egenskapen SourceVersion för en .NET Framework-dataproviderns klass Parameter avgör om du vill använda kolumnvärdets originalversion, aktuella eller föreslagna version. Den här funktionen används ofta för att inkludera ursprungliga värden i WHERE-satsen i en UPDATE-instruktion för att söka efter optimistiska samtidighetsöverträdelser.

Note

Om ett fel uppstår när en rad uppdateras utlöses ett undantag och körningen av uppdateringen avbryts. Om du vill fortsätta uppdateringsåtgärden utan att generera undantag när ett fel påträffas anger du ContinueUpdateOnError egenskapen till true innan du anropar Update. Du kan också svara på fel per rad i RowUpdated händelse av en DataAdapter. Om du vill fortsätta uppdateringsåtgärden RowUpdated utan att generera ett undantag i händelsen anger du Status egenskapen RowUpdatedEventArgs för till Continue.

Se även

Gäller för