Datetimepicker in Mysql DB Speichern

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von VB1963.

    Datetimepicker in Mysql DB Speichern

    Hallo zusammne,

    Ich versuche das Datum meines Datetimepickers in eine Mysql Tabelle zu Speichern:

    VB.NET-Quellcode

    1. anlagendatenbankCommand.CommandText = "INSERT INTO tblAlgemeinEinsaetze (RapportNr, einsatz_id, Datum) VALUES (" & rapportnr & ",1," & DateTimePicker1.Value.Date & ")"
    2. Dim anzahl = anlagendatenbankCommand.ExecuteNonQuery


    Leider erscheint der Fehler:

    Quellcode

    1. MySql.Data.MySqlClient.MySqlException: "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '.2018)' at line 1"


    Der Datetimepicker ist auf "Format = Custom Format" und im Form Load event:

    Quellcode

    1. DateTimePicker1.CustomFormat = "yyyy-MM-dd"


    Die Mysql Spalte ist als Datetime erfasst.

    Vielen Dank.
    Hallo Murdoc,

    Trotzt deiner Hilfe erscheint de Fehler immer noch:
    MySql.Data.MySqlClient.MySqlException: "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '.2018)' at line 1"
    Die Spalten:
    - RapportNr = int
    - Datum = DateTime
    - einsatz_id = int

    Neu:

    Quellcode

    1. anlagendatenbankCommand.CommandText = "INSERT INTO tblAlgemeinEinsaetze (RapportNr, einsatz_id, Datum) VALUES (" & rapportnr & ",1," & DateTimePicker2.Value.ToString("yyyy-MM-dd") & ")"

    Resultat = Bild

    Gespeichert wird noch nichts :-s

    Sorry ich hätte alles lesen müssen:
    anlagendatenbankCommand.CommandText = "INSERT INTO tblAlgemeinEinsaetze (RapportNr, einsatz_id, Datum) VALUES (" & rapportnr & ",1,'" & DateTimePicker2.Value.ToString("yyyy-MM-dd") & "')"

    Funktioniert mit hochkommas perfekt :)

    Bilder
    • string2.PNG

      3,89 kB, 383×146, 113 mal angesehen
    Da du meinen Hinweis mit den Hochkommas kategorisch ignorierst ?( ändere die Anweisung bitte wie folgt:

    VB.NET-Quellcode

    1. anlagendatenbankCommand.CommandText = "INSERT INTO tblAlgemeinEinsaetze (RapportNr, einsatz_id, Datum) VALUES (" & rapportnr & ",1,'" & DateTimePicker2.Value.ToString("yyyy-MM-dd") & "')"
    Gruß Murdoc
    Hier bieten sich parametrisierte Commands dazu an - da könnte man solche leidigen Stringgefüge umgehen und die Datensicherheit wäre auch gegeben...
    In etwa so:

    VB.NET-Quellcode

    1. Private Sub InsertMyDatas(connStr As String, number As Integer, [date] As Date)
    2. Dim SQL = "INSERT INTO tblAlgemeinEinsaetze (RapportNr, einsatz_id, Datum) VALUES (@Number, 1, @Date)"
    3. Using dbcon As New MySqlConnection(connStr)
    4. Using cmd As New MySqlCommand(SQL, dbcon)
    5. cmd.Parameters.Add("@Number", MySqlDbType.Int32).Value = number
    6. cmd.Parameters.Add("@Date", MySqlDbType.Date).Value = [date]
    7. dbcon.Open()
    8. cmd.ExecuteNonQuery()
    9. End Using
    10. End Using
    11. End Sub​

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