Code-Beispiel
   
    
   
   Ein Beispiel zum Einsatz der Klasse System.Data.DataSet aus der .NET-Klassenbibliothek.
   
   Autor: Dr. Holger Schwichtenberg
   Beschreibung
   Sofern das UPDATE-Kommando über den betreffenden Datenadapter definiert wurde, kann ein DataSet ohne weiteren Befehlsaufruf beschrieben werden, indem man zu den gewünschten Zeilen (DataRow-Objekten) navigiert und den gewünschten Spalten über DataRow.Item("SpaltenName") einen neuen Wert zuweist. Nach Ausführung aller Änderungen müssen die Änderungen mit DA.Update(DS, "TabellenName") zur Datenquelle zurückübermittelt werden. Der Aufruf von Update() löst den Aufruf des im Datenadapter definierten UPDATE-Kommandos aus.
Beispiel
Das folgende Beispiel zeigt das Ändern von Datensätzen. In der Tabelle "Produkte" werden alle Preise zu Produkten der Produktkategorie 23 ("EDV-Antik") um 10% erhöht. Das UPDATE-Kommando wird über den OleDbCommandBuilder erzeugt
   
   
    Programmcodebeispiele Visual Basic .NET (VB.NET)
   
   
    ' ============================
' .NET-Code-Beispiel in Visual Basic .NET
' Ändern von Datensätzen in einer Tabelle
' (C) [email protected]
' ============================
    Sub ADONETDSaendern()
        Const FAKTOR As Single = 1.1
        Const SQL As String = _
        "SELECT * FROM Produkte where Kategorie = 23"
        Dim DS As System.Data.DataSet
        Dim DT As System.Data.DataTable
        Dim DR As System.Data.DataRow
        Dim DA As System.Data.OleDb.OleDbDataAdapter
        Dim CB As System.Data.OleDb.OleDbCommandBuilder
        outtitle("Datensatz mit DataSet anfügen")
        ' --- DataSet erzeugen
        DS = New System.Data.DataSet()
        ' --- Adapter definieren
        DA = New OleDbDataAdapter(SQL, CONNSTRING)
        ' --- SQL-DML-Befehle erzeugen
        CB = New OleDbCommandBuilder(DA)
        ' --- Tabelle einlesen
        DA.Fill(DS, "EDV-Antik")
        ' --- Zugriff auf Tabelle
        DT = DS.Tables("EDV-Antik")
        ' --- Ausgabe der Tabelle
        out("--- Bisheriger Zustand der Produkttabelle:")
        out(tabletocsv(DS.Tables("EDV-Antik")))
        ' --- AUSFÜHRUNG EINER PREISERHÖHUNG
        For Each DR In DT.Rows
            Dim AlterPreis As Double
            Dim NeuerPreis As Double
            AlterPreis = CDbl(DR("Preis"))
            NeuerPreis = Math.Round(Alterpreis * FAKTOR, 2)
            DR!Preis = NeuerPreis
            out(DR("Name").ToString & " wurde von " _
            & AlterPreis & " € auf " _
            & NeuerPreis & " € erhöht!")
        Next
        ' --- Änderungen an Datenquelle senden
        DA.Update(DS, "EDV-Antik")
        ' --- Ausgabe der Tabelle
        out("--- Neuer Zustand der Produkttabelle:")
        out(tabletocsv(DS.Tables("EDV-Antik")))
    End Sub
   
         
	
	Programmcodebeispiele CSharp (C#)
	
		using System;
using System.Data;
using System.Data.OleDb;
using FCL_Buch;
namespace FCLBuch._SystemData {
  public class SamplesADONETDataSet {
public void ADONETDSaendern() {
      // Ändern von Datensätzen in einer Tabelle
      float factor = 1.1f;
      string sql = "SELECT * FROM Produkte where Kategorie = 23";
      FclOutput.PrintOutSubHeader( "Datensatz mit DataSet anfügen" );
      // DataSet erzeugen
      DataSet ds = new System.Data.DataSet();
      // Adapter definieren
      OleDbDataAdapter da = new OleDbDataAdapter( sql, ADONET_Globals.ConnectionString );
      // sql-DML-Befehle erzeugen
      OleDbCommandBuilder cb = new OleDbCommandBuilder( da );
      // Tabelle einlesen
      da.Fill( ds, "EDV-Antik" );
      // Zugriff auf Tabelle
      DataTable dt = ds.Tables["EDV-Antik"];
      // Ausgabe der Tabelle
      FclOutput.PrintOutSubHeader( "Bisheriger Zustand der Produkttabelle:" );
      FclOutput.PrintOut( ADONET_HelperMethods.TableToCsv( ds.Tables["EDV-Antik"] ) );
      // AUSFÜHRUNG EINER PREISERHÖHUNG
      foreach ( DataRow dr in dt.Rows ) {
        double alterpreis = (double)dr["Preis"];
        double neuerPreis = Math.Round(alterpreis * factor, 2 );
        dr["Preis"] = neuerPreis;
        FclOutput.PrintOut( dr["Name"].ToString() + " wurde von " + alterpreis + " € auf " + neuerPreis + " € erhöht!" );
      }
}
}
         
   
	
	Hinweise
	Ausgaben werden in den Beispielen durch Hilfsroutinen wie out() und 
		PrintOut() erzeugt. Diese sind hier nicht angegeben, da deren Implementierung 
		von der jeweiligen Umgebung abhängt. Für Konsolenanwendungen können hier z.B. 
		Console.WriteLine() einsetzen.
	
 
   
 
   Querverweise
   
      Liste aller Codebeispiele
     Definition '.NET Framework Class Library'
     Verfügbarkeit der Klasse 'System.Data.DataSet'
     Übersicht über den FCL-Namensraum 'System.Data'
     .NET & Visual Studio Community Portal