Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
xml -> dataset -> msssql
WSX
myCSharp.de - Member



Dabei seit:
Beiträge: 32

Themenstarter:

xml -> dataset -> msssql

beantworten | zitieren | melden

verwendetes Datenbanksystem: ms sql server 2000

folgendes problem, entweder ist es der urlaub der mir seit 1 1/2 jahren abgeht oder das schädelweh durch die weihnachtsfeiern ...
mein problem liegt darin, bekomme von einem partner alle paar stunden statusdaten zurueck, dies wird bis zum 31.12 noch via csv weitergefuehrt, was meiner meinung nach eine releativ gute methode ist.
leider will der partner auf xml umstellen, mein wissen rund um xml hält sich leider in grenzen. besser gesagt der umgang mit dataset und dataadapter, da ich eigentlich nur connected mit der datenbank arbeite.

im vorhinein angemerkt, ich hab jetzt ne halbe stunde lang gegoogelt und finde leider nur das die fill methode zum da, bzw. die update methode, aber hier hab ich leider keine ahnung wie ich das insertcommand, falls ich hier richtig liege gestalten soll.

es geht also darum diese xml statusfiles einfach in eine tabelle in meiner datenbank abzulegen.
meine idee sah eigentlich folgend aus.
wie krieg ich den inhalt des datasets nun in eine tabelle in der datenbank?


private void read(string filename)
{
DataSet dstracking = new DataSet("collistatus");
dstracking.ReadXml(filename);
}

vielen dank im voraus.
"Arbeit ist die altmodische Form der Vermögensbildung in Arbeitnehmerhand."

Wolfram Weidner (*1925), dt. Journalist
private Nachricht | Beiträge des Benutzers
juetho
myCSharp.de - Member



Dabei seit:
Beiträge: 3.331
Herkunft: Berlin

beantworten | zitieren | melden

Zitat
wie krieg ich den inhalt des datasets nun in eine tabelle in der datenbank?
Ganz einfach:

1. Schritt: Erstelle Dir eine xsd-Schemadatei, die den Aufbau der Datenstruktur beschreibt. Muster sind über die Forumssuche nach "xsd" zu finden, z.B. unter Fragen bzgl. XML/Dataset und Speicherung.

2. Schritt: Erzeuge eine DataTable und ordne ihr dieses Schema zu:

DataTable importTable = new DataTable();
importTable.ReadXmlSchema(Path.Combine(filepath, "ImportTable.xsd"));

3. Schritt: Lies die Daten dazu ein:

importTable.ReadXml(Path.Combine(filepath, "ImportTable.xml"));

Dabei sind die Namen von Dateien, Items und Feldern genau anzupassen. Aber mehr gehört wirklich nicht dazu (vorausgesetzt natürlich, die xml-Datei entspricht in ihrem Aufbau einer Tabelle).

Viel Erfolg! Jürgen
private Nachricht | Beiträge des Benutzers
WSX
myCSharp.de - Member



Dabei seit:
Beiträge: 32

Themenstarter:

beantworten | zitieren | melden

das einzige problem dabei ist, dass der partner nicht über solch eine xsd verfügt...
ich hab mir jetzt selbst was gebastelt, funktioniert anscheinend auch recht gut, aber ist halt relativ resourcenlastig, hat wer ne andere variante als das hier?
wäre sehr sehr dankbar, funktioniert zwar aber es macht mich nervös wenn ich in hilfsvariablen speichern muss ...


public void do_job()
{
try
{
string path = "\\\\standbyserver/importPARTNER9113/";
DirectoryInfo di = new DirectoryInfo(path);
FileInfo[] rgFiles = di.GetFiles("*.xml";);
foreach (FileInfo fi in rgFiles)
{
read(fi.FullName.ToString());
//File.Delete(fi.FullName.ToString());
}
}
catch (Exception errormessage)
{
MessageBox.Show(errormessage.Message.ToString());
}
}

private void read(string filename)
{
DataSet ds = new DataSet();
ds.ReadXml(filename);

for(int i = 0; i≤ds.Tables["collistatus"].Rows.Count-1; i++)
{
string[] help = new string[8];
ds.Tables["collistatus"].Rows[i].ItemArray.CopyTo(help, 0);[/i]

ms.cm.CommandText = @"insert into ws_temp_tracking
(coll_nr,stat_date,stat_time,stat_code,stat_text,ex_orderid)
values (@collnr,@statdate,@stattime,@statcode,@stattext,@exorderid);";
ms.cm.Parameters.Clear();
ms.cm.Parameters.AddWithValue("collnr", help[0]);
ms.cm.Parameters.AddWithValue("statdate", help[1]);
ms.cm.Parameters.AddWithValue("stattime", help[2]);
ms.cm.Parameters.AddWithValue("statcode", help[3]);
ms.cm.Parameters.AddWithValue("stattext", help[4]);
ms.cm.Parameters.AddWithValue("exorderid", help[5]);
ms.open();
try
{
ms.cm.ExecuteNonQuery();
}
finally
{
ms.close();
}
}
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von WSX am .
"Arbeit ist die altmodische Form der Vermögensbildung in Arbeitnehmerhand."

Wolfram Weidner (*1925), dt. Journalist
private Nachricht | Beiträge des Benutzers