[GELÖST] MySQL Fehler bei leerem Datumsformat

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Dodo.

    [GELÖST] MySQL Fehler bei leerem Datumsformat

    Moin,

    irgendwie mach meine MySQL Abfrage probleme, wenn ich in einer Tabelle eine Spalte mit dem DATE Format habe und ein Datensatz dann dort einen NULL Wert eingetragen hat, heißt also 0000-00-00 wird mir eine Exception ausgeworfen:
    Unable to convert MySQL date/time value to System.DateTime
    Klar, der fehler liegt daran das 0000-00-00 kein gültiges Format für System.DateTime ist, aber dennoch ist es üblich das solche Werte mal in einer Tabelle auftreten und meine Frage ist nun wie ich es umgehe dass dieser Fehler auftritt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dodo“ ()

    Hey, du könntest abfragen, obs ein Datumsformat ist..

    VB.NET-Quellcode

    1. Dim datum as String = "0000-00-00"
    2. If Not IsDate(datum) Then datum = " " 'oder so
    "Wenn jemand in einem Betrieb unverzichtbar ist, dann ist dieser Betrieb falsch organisiert." - Roberto Niederer
    Problem ist, wie mache ich das beim Query? Da habe ich keine Möglichkeit für Abfragen?

    VB.NET-Quellcode

    1. Dim sqlTable As New SQLDataTable
    2. Try
    3. Dim sqlCommand As New MySqlCommand(sQueryString, connection)
    4. Dim sqlAdapter As New MySqlDataAdapter(sqlCommand)
    5. Dim sqlReader As MySqlDataReader = sqlCommand.ExecuteReader() ' Hier tritt die exception auf, beim ausführen des Queries, bzw. beim zurück geben, da er intern probiert die daten die Parsen.
    6. sqlTable = New SQLDataTable(sqlReader)
    7. sqlReader.Close()
    8. Catch ex As MySqlException
    9. MsgBox(ex.Message)
    10. End Try
    Das ist ja egal, da steht nur drin z.B.

    SQL-Abfrage

    1. SELECT * FROM `tabelle`


    es ist ja kein konvertierungsfehler von meinem Query sondern vom result. Ein Datensatz von meiner Tabelle hat eben in der Date Spalte "nichts" stehen, heißt also 0000-00-00 und das macht anscheint probleme.

    Edit: HABS GEFUNDEN.

    Man muss im Connectionstring noch etwas angeben Allow Zero Datetime=true

    VB.NET-Quellcode

    1. Dim sqlConnection = "server=" + dbHost + ";user id=" + dbUser + "; password=" + dbPassword + "; pooling=false; Allow Zero Datetime=true"
    Ich könnte mir denken dieses Problem tritt sogar ziemlich häufig auf, merkwürdig dass bisher noch niemand hier es gefragt hatte.

    Mir wirds auch nicht nochmal passiern, habe ja meine eigene MySQL Klasse die ich immer wieder mitnehme in projekte wo ich sie benötige und sie wird immer wieder erweitert.