Nicht in der Lage zu konvertieren MySQL.DateTime System.DateTime mit 0000-00-00 00:00:00 Werte

Ich arbeite an einem C# - Projekt, und ich bin vor ein Problem. Das Programm ermöglicht es dem Benutzer, eine Verbindung zu einer MySQL-Datenbank und abrufen von Informationen aus jeder ausgewählten Tabelle und schreiben Sie die Daten in einer Datei. Das problem ist, denn ich habe keine Ahnung, was das schema Aussehen wird oder welche Werte es sich zu enthalten.

Wenn die timestamp-Spalte enthält das Datum 0000-00-00 00:00:00 ich bekomme den Fehler bei der Konvertierung, und egal was ich versuche es klappt nie. Ich habe versucht, die Umwandlung in einen string habe ich versucht, die Umwandlung in einen DateTime-aber ich bekomme immer den Fehler.

Unten ist, ist wie ich bin versucht derzeit, um die Daten abzurufen:

using (ConnectMySQLDB db = new ConnectMySQLDB(databaseSettings))
{
   string query = string.Format("SELECT * FROM {0}.{1}", database, table);
   Console.WriteLine("Query: {0}", query);
   using (MySqlCommand cmd = new MySqlCommand(query, db.conn))
   {
      using (MySqlDataReader reader = cmd.ExecuteReader())
      {
         int i = 1;
         while (reader.Read())
         {
            Console.WriteLine("ID: {0}", i);
            fieldsAndValues = new Dictionary<string, string>();
            foreach (ColumnDataTypes fieldAndType in fieldsAndTypes)
            {
               Console.WriteLine("Column: {0} Type: {1}", fieldAndType.field, fieldAndType.dataType);
               string formattedValue = "";
               if (fieldAndType.dataType == "timestamp")
               {
                  DateTime date = DateTime.Parse(reader.GetDateTime(fieldAndType.field).ToString());
                  formattedValue = date.ToString("yyyyMMdd");
               }

               else
               {
                  formattedValue = getDBFormattedValue(reader.GetString(fieldAndType.field), fieldAndType.dataType);
                  fieldsAndValues.Add(fieldAndType.field, formattedValue);
               }
            }
            rows.Add(fieldsAndValues);
            i++;
         }
      }
   }
}

Ich habe auch Hinzugefügt das zulassen von null-Datum und convertzerodate zu null-option in der connector-string wie folgt:

connString = "server=" + server + ";uid=" + username + ";pwd=" + password + ";port=" + port + ";Allow Zero Datetime=true;zeroDateTimeBehavior=convertToNull;Convert Zero Datetime=true";
  • Warum sind Sie konvertieren ein DateTime in ein string und dann analysieren Sie es wieder zurück? Sicher, man würde immer nur wollen, dass es wieder den gleichen DateTime-es begann mit.
  • Auch, dass Sie noch nicht erzählte uns, was tatsächlich passiert. Sie sagen, Sie bekommen "der Fehler" aber ohne zu sagen was das Fehler ist.
  • Die MySQL connector benutzt du übrigens? Alles, was ich gesehen habe, über diese Verbindung-Zeichenfolge-Optionen, schlägt es für einen Java-Treiber. Sind Sie sicher, dass die Treiber, die Sie verwenden unterstützt Sie?
  • der Fehler in der überschrift. Ich möchte das Datum werden am Ende in einem string aber ich habe irgendwo gelesen, dass Sie brauchen, um zu konvertieren .net datetime konvertieren und dann zurück in einen string
  • Ich bin mir nicht 100% sicher, ob Sie sollten arbeiten oder nicht, von was ich gelesen habe, die Sie erwähnt C#, aber ich könnte falsch sein. Ich bin mit dem ado.net connector von mysql
  • Ah - es war überhaupt nicht klar, dass das war der Fehler; es Klang wie die Beschreibung der Titel. Und Nein, Sie sollten nicht definitiv konvertiert ein DateTime in ein string und dann wieder zurück. Nur mit reader.GetDateTime ist, wie sollten Sie ein DateTime.
  • Ich habe versucht DateTime date = reader.getDateTime(field); und seine immer noch nicht funktioniert, bekomme den gleichen Fehler
  • Haben Sie getan, dass nach der änderung, nur angeben, ConvertZeroDateTime=wahr, wenn, wie ich vorgeschlagen habe?
  • danke das hat geklappt, ich nahm die falsche Sache aus der connector-string. Vielen Dank für Eure Hilfe

InformationsquelleAutor Boardy | 2013-04-12
Schreibe einen Kommentar