falsches Datumsformat in XML-Datei

03/04/2009 - 10:26 von Michael Andreas | Report spam
Hi,

über folgenden Code wandle ich ein SQL-Table in eine
XML-Datei:

string SQL = "SELECT id, kategorie, datum FROM table;";
SqlDataAdapter tmpDataAdapter = new SqlDataAdapter(SQL, My_Con);
tmpDataAdapter.Fill(tmp_DataSet, XMLFileName);
tmp_DataSet.WriteXml(XMLFileName, XmlWriteMode.WriteSchema);

Das SQL-Datum hat das Format "DD.MM.YYYY HH:MM"
Das XML-Datum hat das Format "YYYY-MM-DDTHH:MM:00.41+02:00"

Wie kann ich das XML-Format entsprechend korrigieren?

Danke Michael
 

Lesen sie die antworten

#1 Frank Dzaebel
03/04/2009 - 20:10 | Warnen spam
Hallo Michael,

über folgenden Code wandle ich ein SQL-Table in eine
XML-Datei:
string SQL = "SELECT id, kategorie, datum FROM table;";
SqlDataAdapter tmpDataAdapter = new SqlDataAdapter(SQL, My_Con);
tmpDataAdapter.Fill(tmp_DataSet, XMLFileName);
tmp_DataSet.WriteXml(XMLFileName, XmlWriteMode.WriteSchema);

Das SQL-Datum hat das Format "DD.MM.YYYY HH:MM"
Das XML-Datum hat das Format "YYYY-MM-DDTHH:MM:00.41+02:00"
Wie kann ich das XML-Format entsprechend korrigieren?



Michael, das SQL-Datum hat bei der *Abfrage* kein "Format",
sondern Du meinst wahrscheinlich die *Darstellung* (der
typsicheren DateTime-Werte) in einem DataGridView,
DebuggerVisualizer, oder Debugger. Es bestünde normal
keine Notwendigkeit das XML-Format zu veràndern.
Nehmen wir also mal was reproduzierbares:

string xmlFileName = Path.Combine(
Application.StartupPath, "Employee.xml");
AdventureWorksDataSet tmpAdventureWorks = new AdventureWorksDataSet();
tmpAdventureWorks.EnforceConstraints = false;
string SQL = "SELECT EmployeeID, BirthDate FROM HumanResources.Employee";
SqlDataAdapter tmpDataAdapter = new SqlDataAdapter(SQL,
Properties.Settings.Default.AdventureWorksConnectionString);
tmpDataAdapter.Fill(tmpAdventureWorks.Employee);
tmpAdventureWorks.WriteXml(xmlFileName);
// dataGridView1.DataSource = tmpAdventureWorks.Employee;


Klar, in der XML-Datei wird ein erzeugt, weil der DateTimeMode
standardmàssig auf UnspecifiedLocal (also lokale Zeit) steht:

[DataSetDateTime-Enumeration (System.Data)]
http://msdn.microsoft.com/de-de/lib...etime.aspx

Das könntest Du im DataSet-Designer bei den Eigenschaften
der Spalte BirthDate natürlich auf "Utc" setzen und hàttest tatsàchlich
eine etwas schönere Darstellung im Falle von reiner Date-Semantik.
Aber notwendig ist das nicht. Die String-Darstellung kàme
ggf. zum Tragen, wenn man per manuellem String Select-
Befehle von der DB abfragt. Aber da man das eh in den
meisten Fàllen sauberer Weise eher über SQL-Injection-
freie Parameter macht, sehe ich momentan nicht den
Anwendungsfall - den Du uns aber ggf. ja noch
zukommen lassen kannst.

[SqlParameter-Klasse (System.Data.SqlClient)]
http://msdn.microsoft.com/de-de/lib...meter.aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen