Laden...

[erledigt]Datetime aus MySQL Datenbank auslesen und in String konvertieren

Erstellt von pheanX vor 8 Jahren Letzter Beitrag vor 8 Jahren 4.046 Views
P
pheanX Themenstarter:in
27 Beiträge seit 2015
vor 8 Jahren
[erledigt]Datetime aus MySQL Datenbank auslesen und in String konvertieren

Hallo zusammen,

da ich bisher keine für mich verständliche Lösung gefunden hab frag ich einfach mal hier:

Ich habe eine Datenbank in welcher ein Timestamp liegt vom Typ DateTime den möchte ich auslesen, bekomme aber immer nur ein Leeren Output zurück was ja nicht Sinn der Sache ist.



string timestamp = string.Empty

MySqlCommand command = new MySqlCommand(stm, conn);
                    rdr = command.ExecuteReader();

                    while(rdr.Read())
                    { 
                        timestamp = Convert.ToString(rdr.GetString("timestamp"));
                    }

MessageBox.Show(timestamp);


Habe auch schon versucht es direkt als DateTime auszulesen das bringt dann aber andere Probleme mit sich , wie z.B. das MySQLDateTime =/= .net DateTime ist und dass ich wenn ich folgendes tue das problem habe das ich timestamp nicht aufrufen kann da es angeblich unassigned ist:



                    DateTime timestamp;

                     MySqlCommand command = new MySqlCommand(stm, conn);
                     rdr3 = command.ExecuteReader();

                     while(rdr.Read())
                     { 
                         timestamp = (rdr.GetDateTime("timestamp"));
                       
                     }
                    


Brauche dringend hilfe...

2.207 Beiträge seit 2011
vor 8 Jahren

Wieso konvertierst du einen String nach String (1. Beispiel)?

Aus dem Bauch heraus und ins blaue geschossen: Bringt er dir überhaupt rows zurück als Ergebnis? Ist der Spaltenname richtig?

Ansonsten
Unable to convert MySQL date/time value to System.DateTime

Gruss

Coffeebean

P
pheanX Themenstarter:in
27 Beiträge seit 2015
vor 8 Jahren

zu 1. sorry war ein Tipfehler meinerseits da sollte ebenfall timestamp = Convert.ToString(rdr.GetDateTime("timestamp")); stehen.

Ob er mir überhaupt was zurück bringt kann ich schwer sagen - der Spaltenname stimmt.

Ich bekomme soweit keine Row zurück da ich sie mir bisher nicht anzeigen lassen konnte zumindest wüsste ich aktuell nicht wie - vielleicht stehe ich ja auch auf dem Schlauch

2.207 Beiträge seit 2011
vor 8 Jahren

Ob er mir überhaupt was zurück bringt kann ich schwer sagen - der Spaltenname stimmt.

[Artikel] Debugger: Wie verwende ich den von Visual Studio?

Gruss

Coffeebean

5.658 Beiträge seit 2006
vor 8 Jahren

Hi pheanX,

das problem habe das ich timestamp nicht aufrufen kann da es angeblich unassigned ist

Scheint mir eine Kompilermeldung zu sein: [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen)

Im zweiten Beispiel hast du die timestamp-Variable nicht initialisiert.

Christian

Weeks of programming can save you hours of planning

P
pheanX Themenstarter:in
27 Beiträge seit 2015
vor 8 Jahren

@Christian wärst du so lieb und würdest mir dafür ein Beispiel bringen da ich echt entweder dumm bin oder richtig hart auf dem schlauch stehe...

Sollang werde ich mich mit meinem Debugger auseinander setzen 😕

H
523 Beiträge seit 2008
vor 8 Jahren

Zum Beispiel so:


DateTime timestamp = DateTime.MinValue;

P
pheanX Themenstarter:in
27 Beiträge seit 2015
vor 8 Jahren

Okay wenn ich DateTime timestamp = DateTime.MinValue; verwende bekomme ich

01.01.0001 0000:00:00 zurück was ja schonmal besser is als ein empty string leider kann ich immernoch nicht feststellen wo mein Fehler liegt, den einen VarChar kann ich mit der selben methode auslesen 😕

5.299 Beiträge seit 2008
vor 8 Jahren

vielleicht ist in der Datenbank das timestamp-Feld garnet als Varchar angelegt?

Und vlt. liefert deshalb rdr.GetString auch nix - weil es ist halt kein String?

Der frühe Apfel fängt den Wurm.

P
pheanX Themenstarter:in
27 Beiträge seit 2015
vor 8 Jahren

Ich glaub du missverstehst mich ich habe einen anderen wert aus einer anderen spalte ausgelsen welche varchar ist - als string - was auch klappt das problem ist nur das ich wie bereits erwähnt vermute das es an dem Format liegt, das ich die DateTime nicht auslesen kann

MySQLDateTime =/= System.DateTime und das er daher nicht in der Lage ist es als DateTime abzulegen


                     MySqlCommand command2 = new MySqlCommand(stm2, conn2);
                     rdr2 = command2.ExecuteReader();

                     while (rdr2.Read())
                     { 
                         code = (rdr2.GetString("code"));
                     }


funktioniert einwandfrei

5.299 Beiträge seit 2008
vor 8 Jahren

vlt. missverstehst aber auch du mich.
Weil wassichsagen will ist, dass rdr.GetString() die falsche Methode ist, um einen Datum-Wert auszulesen.
benutze halt eine geeignetere Methode.

ganz sicher bin ich nicht - vlt. kann man auch mit .GetString() DatumWerte auslesen - ich mach nie was mit DataReadern.

Der frühe Apfel fängt den Wurm.

P
pheanX Themenstarter:in
27 Beiträge seit 2015
vor 8 Jahren

Darüber habe ich auch nachgedacht daher ja dieser Ansatz:



                    DateTime timestamp = DateTime.MinValue;

                     MySqlCommand command = new MySqlCommand(stm, conn);
                     rdr3 = command.ExecuteReader();

                     while(rdr.Read())
                     {
                         timestamp = (rdr.GetDateTime("timestamp"));

                     }


aber auch das ist erfolglos geblieben , was würdest du mir den empfehlen anstellen des DataReaders??

F
10.010 Beiträge seit 2004
vor 8 Jahren
  1. da wir nicht wissen was stm ist, wie sollen wir da helfen?
  2. einen einzelnen Wert liest man per ExecuteScalar.

aber auch das ist erfolglos geblieben [Artikel] Debugger: Wie verwende ich den von Visual Studio?
Dann kommt durch deine Abfrage eben nichts zurück.

5.299 Beiträge seit 2008
vor 8 Jahren

was würdest du mir den empfehlen anstellen des DataReaders?? ich arbeite am liebsten mit typisierten Datasets, die ich über geeignet konfigurierte DataAdapter befülle.
Die DataAdapter können dann auch Änderungen in richtiger Weise rückspeichern, also die nutzen die Änderungsverfolgung des Datasets, und betätigen dementsprechend die zuvor eingerichteten Select, Insert, Update, Delete - Commands (und überspringen natürlich unchanged Rows).

Der frühe Apfel fängt den Wurm.

H
523 Beiträge seit 2008
vor 8 Jahren

Hallo pheanX,

wie die anderen schon geschrieben hatten, musst Du den Code einfach mal mit Einzelschritten debuggen um zu prüfen warum das ganze nicht funktioniert.

  • Gibt SQL-Abfrage überhaupt ein Ergebnis zurück?
  • Was gibt rdr.GetDateTime("timestamp") zurück?

All diese Fragen lassen sich in zwei Minuten mit dem Debugger beantworten.

P
pheanX Themenstarter:in
27 Beiträge seit 2015
vor 8 Jahren

Vielen Dank für die vielen tipps und tricks ebenfalls für den link zu den Compilerfehler und zu dem Debugg Tutorial <.< Ich habe es einzeln debugged und den fehler gefunden <.<

==> man kann es als string auslesen dann muss man es aber auch richtig schreiben der fehler lag wirklich am stm

Vielen vielen dank