Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - MySql-Datentyp "TIME" und "DATE" mit C# ansprechen.


Rassi - Mi 24.09.08 13:58
Titel: MySql-Datentyp "TIME" und "DATE" mit C# ansprechen.
Hallo.

Folgendes Problem.
Ich möchte in eine MySql-Tabellenspalte, die den Datentyp "TIME" bzw. "DATE" hat, mit einem C# Programm etwas schreiben.

Ich gehe so vor, dass ich in C# zuerst ein "INSERT"-Komando erstelle (com= myconn.createCommand(); ......).

Bei der Erstellung der Übergabeparameter benutze ich ein "TIME" bzw. "DATE"
Datentyp (Zeit= com.Parameters.Add("?zeit", MySqlDbType.TIME);....).

Nun muss ich, um das Kommando auszuführen die Parameter beschreiben und den Befehl ausführen
(
Zeit.Value= Variable_fuer_Zeit;
com.ExecuteNonQuery();
)

Meine Frage nun, welchen Datentyp muss die Variable "Variable_fuer_Zeit" haben, wenn die Sql-Tabelle den Datentyp "TIME" bzw. "DATE" erwartet?

Ich habe bei meinen Versuchen immer die Fehlermeldung bekommen, dass nur ein TimeSpan-Typ übergeben werden kann.
Wenn das so ist, wie bekomme ich eine Zeitangabe bzw. Datumsangabe in diesen Typ gewandelt?


Gruß
Rasmus


Th69 - Mi 24.09.08 15:25

Mit welchen Datentypen arbeitest du denn intern in deinem Programm (DateTime, string, ...)?

Um aus einem DateTime-Object ein TimeSpan-Object zu erstellen (d.h. nur den Time-Anteil):

C#-Quelltext
1:
2:
3:
4:
5:
DateTime dt = DateTime.Now; // oder new DateTime(...)
TimeSpan ts = new TimeSpan(dt.Hour, dt.Minute, dt.Second);

// und dann an den Datenbank-Parameter übergeben
Zeit.Value = ts;

Und für "DATE" einfach direkt DateTime verwenden (falls es als String vorliegt, evtl. erst DateTime.Parse() bzw DateTime.ParseExact() aufrufen).


Rassi - Do 25.09.08 13:11

Hallo.

Vielen Dank für die Hilfe, so gehts.

Gruß
Rasmus


Kha - Do 25.09.08 15:52

Oder einfach DateTime.TimeOfDay, wenn dir auch die Millisekunden wichtig sind ;) .