IDataAdapter.Update(DataSet) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
public:
int Update(System::Data::DataSet ^ dataSet);
public int Update(System.Data.DataSet dataSet);
abstract member Update : System.Data.DataSet -> int
Public Function Update (dataSet As DataSet) As Integer
Parametrar
Returer
Antalet rader har uppdaterats från DataSet.
Undantag
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 , OleDbDataAdaptertill Update datakällan. Det här exemplet förutsätter att du har skapat en OleDbDataAdapter och en DataSet.
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
Kommentarer
När ett program anropar UpdateRowState metoden IDataAdapter 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 .
Tänk på att dessa instruktioner inte utförs som en batchprocess. varje rad uppdateras individuellt. Ett program kan anropa GetChanges metoden om 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:
Värdena i DataRow flyttas till parametervärdena.
Händelsen OnRowUpdating aktiveras.
Kommandot körs.
Om kommandot är inställt på
FirstReturnedRecordplaceras det första returnerade resultatet i DataRow.Om det finns utdataparametrar placeras de i DataRow.
Händelsen OnRowUpdated aktiveras.
AcceptChanges kallas.
Varje kommando som är associerat med IDataAdapter 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 IDataAdapter 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 | Vidtagen åtgärd |
|---|---|
MissingMappingAction.Passthrough |
Använd källkolumnnamnen och tabellnamnen i om DataSet ingen mappning finns. |
MissingMappingAction.Ignore |
A SystemException genereras. När mappningarna uttryckligen anges orsakas en mappning som saknas för en indataparameter vanligtvis 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-dataproviders klass Parameter avgör om du vill använda Original, Current eller Proposed version av kolumnvärdet. 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.