MYSQL - Command - NULL Wert eingeben

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    MYSQL - Command - NULL Wert eingeben

    Hallo zusammen,

    ich Frage eine Oracle - Datenbank ab und speichere die Werte dann in eine MySQL - Datenbank ab. Nun habe ich folgendes Problem, dass ich keine NULL-Werte in die MySQL-Datenbank bekomme.
    Unter PHP hab ich dies wie folgt gelöst:

    PHP-Quellcode

    1. ". ($al == null ? 'null' : "'" . mysql_escape_string($al) ."'") . "


    Wie kann ich die unter VisualBasic lösen? Hat hier jemand eine Idee?

    Ich bekomme es nur unter VisualBasic hin, wenn ich im SQL-Befehl direkt den NULL-Wert eintrage:

    VB.NET-Quellcode

    1. ommand.CommandText = "INSERT INTO `einsatz` (`ID`, `einsatz_nummer`) " & _
    2. "VALUES ('" & einsatz_ID & "', Null)"
    3. Command.ExecuteNonQuery()


    Vielen lieben Dank für die Rückmeldungen

    Sascha
    Wenn du beim Insert eine Spalte nicht aufführst, dann

    wird zu Recht moniert, dass die Anzahl Parameter nicht passt.

    Ich bekomme es nur unter VisualBasic hin, wenn ich im SQL-Befehl direkt den NULL-Wert eintrage

    Schön. Und wie sieht der nicht funktionierende Code aus?
    Wenn du uns diesen vorenthälst, dann können wir ja kaum Verbesserungsvorschläge machen ...

    Ansonsten, wie gesagt, DbParameter nutzen und dort DbNull eintragen, wenn der Parameter leer bleiben soll.
    Das ist allemal besser als zwei Varianten von SQL zu schreiben, die den Normalfall und den Sonderfall behandeln.
    An manchen Tagen gibt es zu allem Überfluss auch noch Ärger!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Rainman“ ()

    Danke für die schnellen Antworten

    @ErfinderDesRades:


    1:verwende DbParameter
    Welche würdest du hier verwenden?

    2: Wenn du beim Insert eine Spalte nicht aufführst, dann wird die doch automatisch auf Dbnull gesetzt, oder?
    Nachdem ich ja nicht weiß, ob der Wert aus der Oracle-Datenbank NULL ist, kann ich dies nicht anwenden - kann NULL sein, kann aber auch Werte drinnen stehen

    @Rainman:

    Hier ist der Code:

    VB.NET-Quellcode

    1. Dim cmd As New OracleCommand
    2. cmd.Connection = conn
    3. cmd.CommandText = "SELECT id COL1," _
    4. + "allg_nr COL2," _
    5. + "to_char(allg_datum, 'YYYY-MM-DD hh24:mi:ss') COL3," _
    6. + "to_char(allg_erzeug_datum, 'YYYY-MM-DD hh24:mi:ss') COL4" _
    7. + "FROM artikel "
    8. cmd.CommandType = CommandType.Text
    9. Dim dr As OracleDataReader = cmd.ExecuteReader()
    10. While dr.Read()
    11. Dim ID As Integer = If(IsDBNull(dr.Item("COL1")) = True, "", CStr(dr.Item("COL1")))
    12. Dim allg_nr = If(IsDBNull(dr.Item("COL2")) = True, "", CStr(dr.Item("COL2")))
    13. Dim allg_datum = If(IsDBNull(dr.Item("COL3")) = True, "", CStr(dr.Item("COL3")))
    14. Dim allg_erzeug_datum = If(IsDBNull(dr.Item("COL4")) = True, "", CStr(dr.Item("COL4")))
    15. Command.CommandText = "INSERT INTO `artikel_mysql` (`id`, `allg_nr`, `allg_datum`, `allg_erzeug_datum`) " & _
    16. "VALUES ('" & ID & "', '" & allg_nr & "', '" & allg_datum & "', '" & allg_erzeug_datum & "' )"
    17. Command.ExecuteNonQuery()
    18. End While