nicht erkennbarer Syntaxfehler in SQL-Anweisung

  • VB.NET
  • .NET 5–6

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Montoyafan.

    nicht erkennbarer Syntaxfehler in SQL-Anweisung

    Ich habe einen Fehler in der Syntax und kann es nicht finden:

    VB.NET-Quellcode

    1. "INSERT INTO agenda (agenda_vertrag_id,agenda_nr,agenda_kategorie) VALUES ('" & ds_vertrag_id & "','" & ds_vertrag_nr & "','Aufgabe zum Vorgang')"
    @Thomas2705 Pack das in eine Variable und schau Dir den Inhalt dieser Variable an.
    Probier mal so (das äncddert allderdings den Sachverhalt nicht):

    VB.NET-Quellcode

    1. $"INSERT INTO agenda (agenda_vertrag_id,agenda_nr,agenda_kategorie) VALUES ('{ds_vertrag_id}','{ds_vertrag_nr}','Aufgabe zum Vorgang')"
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Einen Fehler zur Designzeit kann ich nur provozieren, wenn ds_vertrag_id und/oder ds_vertrag_nr nicht deklariert wären oder man das Ganze keiner Zielvariablen zuweist. Ich vermute mal, dass der Syntaxfehler zur Laufzeit entsteht, richtig? Wie lautet die Fehlermeldung? Von welchem Typ ist die Exception? SqlException?
    Welche Datentypen hast Du in der DB für agenda_vertrag_id, agenda_nr und agenda_kategorie und im Code für ds_vertrag_id und ds_vertrag_nr festgelegt?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo,

    du solltest dich auch mit dem Thema SQL Injection auseinander setzen.

    VB.NET-Quellcode

    1. Dim query As String = "INSERT INTO agenda (agenda_vertrag_id,agenda_nr,agenda_kategorie) VALUES (@pDslID,@pDslNr,'Aufgabe zum Vorgang');"
    2. Using cmd As New SqlCommand With {.Connection = conn}
    3. cmd.CommandText = query
    4. cmd.Parameters.Add("@pDslID", SqlDbType.Int32).Value = ds_vertrag_id
    5. cmd.Parameters.Add("@pDslNr", SqlDbType.VarChar).Value = ds_vertrag_nr
    6. cmd.ExecuteNonQuery()
    7. End Using


    VaporiZed schrieb:

    Welche Datentypen hast Du in der DB für agenda_vertrag_id, agenda_nr und agenda_kategorie und im Code für ds_vertrag_id und ds_vertrag_nr festgelegt?


    Ausgehend davon das in seinem Query diese in einfachen Anführungszeichen eingerahmt sind, würde ich auf irgendein Text-Datentyp tippen, was zumindest für agenda_vertrag_id natürlich Käse ist.