DataSet als XML und zurück

  • C#
  • .NET (FX) 4.0

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von mrMo.

    DataSet als XML und zurück

    Moin,
    ich lese eine Access Datei in den Speicher, genau gesagt in ein DataSet. Wenn ich nun aus den DataSet mir ein DataRow schnappe, kann ich diesen auslesen mit z.b.

    C#-Quellcode

    1. daten["Vorname"].ToString();

    Soweit keine große Sache.

    Dann kann man mit der

    C#-Quellcode

    1. WriteXml("daten.xml");
    Methode, das DataSet als XML Datei speichern. Läuft soweit auch wunderbar.
    Nun liest das gleiche Programm aber die Daten nicht aus der Access Datei, sonder mit der Methode

    C#-Quellcode

    1. ReadXml("daten.xml");
    wieder in den Speicher, genauer gesagt in das DataSet. Wenn ich jetzt aber mit

    C#-Quellcode

    1. daten["Vorname"].ToString();
    Arbeite, bekomme ich eine Exception:

    System.InvalidCastException: "Die angegebene Umwandlung ist ungültig."

    Wo mache ich den Fehler?
    Habe den Fehler nun woanders finden können.
    In einer weiteren Zeile caste ich (int)daten["Kundennummer"] was zwar funktioniert wenn man eine Access Datei einliest, aber nicht wenn man eine XML ins DataSet liest.

    Richtig ist, Convert.ToInt32["Kundennummer"]

    Kann auch gern gelöscht werden, diese Beitrag.
    Wenn du das DataSet speicherst, speicher doch parallel das Schema des DataSets. Beim Laden erst Schema, dann Daten ins DataSet laden..Das haben die Felder die ursprünglichen Datentypen.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @Bluespide Oh, hätte ich mir doch mal die Überladungen anschauen sollen ;) Auch gut, hatte mich schon gewundert warum ich da 2 Dateien erstellen muss. Merci :)
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Das mit dem Schema finde ich auch gut. Aber das gleiche Programm liest die Daten auch aus Access aus, und da muss ich sowieso Conventieren.
    Also bringt es in meinen Fall nichts.

    Kurz mal das Warum...
    Im Netzwerk liegt eine kleine ca. 40MB Access Datei die von überall mit Daten gefüttert wird.
    Mein Programm bedienst sich dieser Daten und packt es in ein DataSet. Bei jeden Programmstart, werden die Daten local in einer XML Datei gespeichert.
    Wenn man mit z.b. seinem Notebook nicht im Netzwerk ist, greift mein Programm eben auf die XML Datei zu und zeigt an, dass man "offline" Arbeitet. Aber das Programm läuft weiter.

    Das funktioniert erschreckend einfach. Kurz prüfen ob die Access Datei da ist, wenn nicht eben mit ReadXml die Daten local laden. Das Programm dahinter ist aber exakt das gleiche als wenn die Daten aus Access kommen würde.

    Pardasus schrieb:

    aus Access aus, und da muss ich sowieso Conventieren.

    Wegen? Da gibts doch auch Datentypen? Oder speicherst du alles als String?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen