Leistungen
Leistungen
Überblick
Leistungsangebot
Kernkompetenzen
Schulungsthemen
In-House-Schulungen
Offene .NET-Seminare
Offene WPS-Seminare
Beratung
Coaching
Support
Softwareentwicklung
Entwickler-Vermittlung
.NET/Visual Studio
TFS/ALM/Scrum
Webprogrammierung
PowerShell
Konditionen
Anfrage/Kontakt
Beratung/Coaching
Beratung/Coaching
Beratungsthemen
Coaching
Unsere Berater
Referenzkunden
Konditionen
Angebotsanfrage
In-House-Schulungen
In-House-Schulungen
Überblick
Themen/Fachgebiete
Schulungskonfigurator
Konzepte
.NET/Visual Studio
C#
VB.NET
ASP.NET
Moderne Webanwendungen
TFS/ALM/Scrum
PowerShell
Konferenzvortraege
Referenzkunden
Unsere Trainer
Konditionen
Angebotsanfrage
Offene Schulungen
Offene Schulungen
Überblick .NET-Seminare
.NET/C#-Basisseminar
WPF (Desktop)
ASP.NET/AJAX (Web)
WCF/WF (SOA)
ADO.NET/EF (Data)
Windows PowerShell
.NET, C#, VB, Visual Studio
.NET, C#, VB, Visual Studio
Startseite
Beratung/Training
Offene .NET-Seminare
Einführung
Lexikon
Artikel
Bücher
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
World Wide Wings Demo
Codebeispiele
Scripting
ASP.NET
.NET 2.0
.NET 3.0/3.5
.NET 4.0/4.5
Community
Forum
Kommerzielle Leistungen
ASP.NET
ASP.NET
Startseite
Lexikon
Sicherheit
Konfiguration
Global.asax
Tracing
Technische Beiträge
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
PowerShell
PowerShell
Überblick
Beratung
In-House-Schulungen
Öffentliche Schulungen
Codebeispiele
Commandlet Extensions
Offene PowerShell-Seminare
Inhouse-Seminare
Windows
Windows
Startseite
Windows Runtime (WinRT)
Windows PowerShell
Windows Scripting
Windows-Schulungen
Windows-Lexikon
Windows-Forum
Windows Scripting
Windows Scripting
Startseite
Lexikon
FAQ
Buecher
Architektur
Skriptsprachen
Scripting-Hosts
Scripting-Komponenten
COM/DCOM/COM+
ADSI
WMI
Scripting-Tools
WSH-Editoren
Codebeispiele
ASP.NET
.NET-Scripting
Forum
Links
Kommerzielle Leistungen
Service
Service
Website-FAQ
Anmeldung/Login
Leser-Registrierung
Gast-Registrierung
Nachrichten/RSS
Newsletter
Foren
Weblog
Lexikon
Downloads
Support
Kontakt
Literaturtipps
Publikationen
Publikationen
Redaktionsbüro
Bücher
Fachartikel
Leser-Portal
Autoren gesucht!
Rezensionen
Über uns
Über uns
Holger Schwichtenberg
Team
Referenzkunden
Kundenaussagen
Referenzprojekte
Partner
Site Map
Weitere Websites
Tag Cloud
Impressum
Rechtliches

Veränderung eines DataSet-Objekts via XML
Codebeispiel für Visual Basic .NET (VB.NET) und CSharp (C#)

Liste aller Codebeispiele

Veränderung eines DataSet-Objekts via XML

Ein Beispiel zum Einsatz der Klasse System.Data.XmlDataDocument aus der .NET-Klassenbibliothek.

Autor: Dr. Holger Schwichtenberg 

Beschreibung

Ein XmlDataDocument-Objekt ermöglicht die Bearbeitung des Inhalts eines DataSet-Objekts über das XML Document Object Model (DOM). Die Klasse System.Xml.XmlDataDocument ist abgeleitet von der Klasse System.Xml.XmlDocument.

Ein XmlDataDocument-Objekt ist keine Kopie der XML-Daten, sondern eine andere Sicht auf ein DataSet. Der Konstruktor der XmlDataDocument-Klasse wird mit einem DataSet-Objekt aufgerufen.

DD = New System.Xml.XmlDataDocument(DS)

Danach wirken alle Änderungen in dem XmlDataDocument-Objekt sofort auf das DataSet und umgekehrt. Um ein XmlDataDocument-Objekt beschreiben zu können, ist Voraussetzung, dass in dem zugehörigen DataSet die Konsistenzprüfungen ausgeschaltet sind.

DS.EnforceConstraints = False

Beispiel


In der folgenden Routine wird zunächst ein DataSet mit einer Tabelle ("SELECT * FROM Produkte where name like 'Amiga%'") erzeugt. Daraus wird ein XmlDataDocument-Objekt abgeleitet. Dieses Dokument wird mit den Methoden des XML-DOM ausgegeben (GetOuterXML()), durchsucht (XN=SelectSingleNode()) und geändert (XN.InnerText = WERT). Zum Beweis, dass diese Änderungen auf das DataSet durchschlagen, wird das DataSet in XML-Form ausgegeben (DS.GetXml). Die Änderungen werden zum Schluss mit Hilfe eines OleDbCommandBuilder-Objekts an die Datenquelle (hier: die Access-Datenbank EDVShop.mdb) zurückgesandt.

Programmcodebeispiele Visual Basic .NET (VB.NET)

' ============================
' .NET-Code-Beispiel in Visual Basic .NET
' Veränderung eines DataSet-Objekts via XML
' (C) Holger@Schwichtenberg.de
' ============================
   Sub ADONET_DSXML2()
   Dim DS As System.Data.DataSet
   Dim Com As System.Data.OleDb.OleDbCommand
   Dim SQL As String

   outtitle("Veränderung eines DataSet-Objekts via XML")

   ' --- DataSet erzeugen
   DS = New System.Data.DataSet()

   ' --- Tabelle einlesen
   SQL = "SELECT * FROM Produkte where name like 'Amiga%'"
   Dim DA As System.Data.OleDb.OleDbDataAdapter
   DA = New System.Data.OleDb.OleDbDataAdapter(SQL, CONNSTRING)
   DA.Fill(DS, "EDV-Antik")

   ' --- DataDocument erzeugen
   Dim DD As System.Xml.XmlDataDocument
   DD = New System.Xml.XmlDataDocument(DS)

   ' --- bestimmtes Element finden
   Dim XN As System.Xml.XmlNode
   XN = DD.SelectSingleNode("*//EDV-Antik[Name='Amiga 500']/Preis")

   ' --- Änderungen zulassen
   DS.EnforceConstraints = False

   ' --- alten Wert auslesen
   Dim alterpreis As Double
   alterpreis = CType(XN.InnerText, Double)

   ' --- Neuen Wert ermitteln
   Dim neuerpreis As Double
   neuerpreis = alterpreis * 1.5

   ' --- Neuen Wert setzen
   XN.InnerText = neuerpreis.ToString

   ' --- Ausgabe der Änderung
   out("Preis wurde von " _
   & alterpreis & " € auf " _
   & neuerpreis & " € erhöht!")

   ' --- Kontrollausgabe des DataSets
   out("--- DataSet nach Änderung:")
   out(DS.GetXml)

   ' --- Speicherung vorbereiten
   Dim CB As System.Data.OleDb.OleDbCommandBuilder
   CB = New OleDbCommandBuilder(DA)

   ' --- Speicherung des DataSets
   DA.Update(DS, "EDV-Antik")
   out("Änderungen gespeichert!")

   End Sub

Programmcodebeispiele CSharp (C#)

using System;
using System.Data;
using System.Data.OleDb;
using System.Xml;
using System.IO;

using FCL_Buch;

namespace FCL_Buch._System_Data {

  public class Samples_ADONET_XML {
public void ADONET_DataSetXML2() {

   //Veränderung eines DataSets via XML
   FclOutput.PrintOutSubHeader( "Veränderung eines DataSets via XML" );

   // DataSet erzeugen
   DataSet ds = new DataSet();

   // Tabelle einlesen
   string sql = "SELECT * FROM Produkte where name like 'Amiga%'";
   OleDbDataAdapter da = new OleDbDataAdapter( sql, ADONET_Globals.ConnectionString );
   da.Fill( ds, "EDV-Antik" );

   // DataDocument erzeugen
   XmlDataDocument dd = new XmlDataDocument( ds );

   // XML-Baum ausgeben
   FclOutput.PrintOut( dd.OuterXml );

   // bestimmtes Element finden
   XmlNode node = dd.SelectSingleNode( "*//EDV-Antik[Name='Amiga 500']/Preis" );

   // Änderungen zulassen
   ds.EnforceConstraints = false;

   // alten Wert auslesen
   double oldPrice = Double.Parse(node.InnerText);

   // Neuen Wert ermitteln
   double newPrice = oldPrice * 1.5d;

   // Neuen Wert setzen
   node.InnerText = newPrice.ToString();

   // Ausgabe der Änderung
   FclOutput.PrintOut( "Preis wurde von " + oldPrice + " € auf " + newPrice + " € erhöht!" );

   // Kontrollausgabe des DataSets
   FclOutput.PrintOutSubHeader( "DataSet nach Änderung:" );
   FclOutput.PrintOut( ds.GetXml() );

   // Speicherung vorbereiten
   OleDbCommandBuilder cb = new OleDbCommandBuilder( da );

   // Speicherung des DataSets
   da.Update( ds, "EDV-Antik" );
   FclOutput.PrintOut( "Änderungen gespeichert!" );
   }
}
}

Querverweise

Definition '.NET Framework Class Library'
Verfügbarkeit der Klasse 'System.Data'
Übersicht über den FCL-Namensraum 'System.Data'
Portal dotnetframework.de