Was ist an dieser INSERT INTO-Anweisung falsch?

  • VB.NET

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von Edwardschn.

    Was ist an dieser INSERT INTO-Anweisung falsch?

    Hallo,

    Ich habe mir eine Insert Into Anweisung gebaut. Diese fügt Daten aus meiner Anwendung in die Access Datenbank ein.
    Leider bekomme ich ein Fehler, dass die INSERT INTO-Anweisung Syntaxfehler enthält. Nach stundenlangem suchen bin ich immer noch verzweifelt.

    VB.NET-Quellcode

    1. cmd2.CommandText = "insert into ProfileData (language, startparam, sizeh, sizeb, autostart, laoddb, autoupdates, dbpath, dbbackup, dbbackuppath, dbbackupsize, sview, sgroup, stime, stimevalue, clip, compweek, workhours, workhoursa, workhoursb, autoorder) VALUES ('" & ComboBoxEdit2.SelectedItem & "','" & ComboBoxEdit1.SelectedItem & "','" & TextEdit2.Text & "','" & TextEdit4.Text & "','" & CheckEdit1.CheckState & "', '" & CheckEdit2.CheckState & "', '" & CheckEdit3.CheckState & "', '" & TextEdit1.Text & "', '" & CheckEdit4.CheckState & "', '" & TextEdit3.Text & "', '" & NumericUpDown2.Value & "', '" & ComboBoxEdit3.SelectedItem & "', '" & ComboBoxEdit4.SelectedItem & "', '" & ComboBoxEdit6.SelectedItem & "', '" & NumericUpDown1.Value & "', '" & ComboBoxEdit5.SelectedItem & "', '" & CheckEdit5.CheckState & "', '" & CheckEdit6.CheckState & "', '" & TimeEdit1.Time & "', '" & TimeEdit2.Time & "', '" & CheckEdit7.CheckState & "')"


    Ich hoffe jemand kann mir helfen! Danke :rolleyes:
    Wenn ich meine Try/Catch Methode rausnehme, dann sehe ich, dass VB eigentlich eine Zeile nach der Insert Into Anweisung als fehlerhaft markiert:

    VB.NET-Quellcode

    1. anzahl2 = cmd2.ExecuteNonQuery()


    Danach kommt noch das:

    VB.NET-Quellcode

    1. If anzahl2 > 0 Then
    2. End If


    Edit by Manschula: Unnötiges Vollzitat entfernt! Der Zitierte steht direkt über dir!

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

    Stimmt Try muss raus :)

    VB.NET-Quellcode

    1. Dim anzahl2 As Integer


    Und der Fehler ist:

    Quellcode

    1. Syntaxfehler in der INSERT INTO-Anweisung.


    Edit by Manschula: Unnötiges Vollzitat entfernt! Der Zitierte steht direkt über dir!

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

    VB.NET-Quellcode

    1. Public Sub CreateCommand(ByVal queryString As String, _
    2. ByVal connectionString As String)
    3. Using connection As New SqlConnection(connectionString)
    4. Dim command As New SqlCommand(queryString, connection)
    5. command.Connection.Open()
    6. command.ExecuteNonQuery()
    7. End Using
    8. End Sub


    Du willst also die Zeilen als Integer angeben?
    Erstaunlich wie mein Post übersehen wird.
    Mach es mit DB-Parameter und dein Statement wird funktionieren.

    "Syntaxfehler in der INSERT INTO-Anweisung." bedeutet einfach du hast in deiner Sql-Syntax einen Fehler. Der Code wird schon stimmen könntest aber ruhig mehr davon posten.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten

    fichz schrieb:

    Erstaunlich wie mein Post übersehen wird.
    Mach es mit DB-Parameter und dein Statement wird funktionieren.

    "Syntaxfehler in der INSERT INTO-Anweisung." bedeutet einfach du hast in deiner Sql-Syntax einen Fehler. Der Code wird schon stimmen könntest aber ruhig mehr davon posten.

    lg



    Eigentlich war es bei mir immer eine "alt" bewährte Methode. DBParameter werde ich mir angucken.


    Hier der vollständige Code:

    VB.NET-Quellcode

    1. Dim con2 As New OleDb.OleDbConnection
    2. Dim cmd2 As New OleDb.OleDbCommand
    3. Dim anzahl2 As Integer
    4. con2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Jet OLEDB:Database Password=" & DBLogin.TextBox1.Text & ";" & "Data Source=" & DBLogin.TextBox3.Text
    5. cmd2.Connection = con2
    6. cmd2.CommandText = "select * from ProfileData"
    7. con2.Open()
    8. cmd2.CommandText = "insert into ProfileData (language, startparam, sizeh, sizeb, autostart, laoddb, autoupdates, dbpath, dbbackup, dbbackuppath, dbbackupsize, sview, sgroup, stime, stimevalue, clip, compweek, workhours, workhoursa, workhoursb, autoorder) VALUES ('" & ComboBoxEdit2.SelectedItem & "','" & ComboBoxEdit1.SelectedItem & "','" & TextEdit2.Text & "','" & TextEdit4.Text & "','" & CheckEdit1.CheckState & "', '" & CheckEdit2.CheckState & "', '" & CheckEdit3.CheckState & "', '" & TextEdit1.Text & "', '" & CheckEdit4.CheckState & "', '" & TextEdit3.Text & "', '" & NumericUpDown2.Value & "', '" & ComboBoxEdit3.SelectedItem & "', '" & ComboBoxEdit4.SelectedItem & "', '" & ComboBoxEdit6.SelectedItem & "', '" & NumericUpDown1.Value & "', '" & ComboBoxEdit5.SelectedItem & "', '" & CheckEdit5.CheckState & "', '" & CheckEdit6.CheckState & "', '" & TimeEdit1.Time & "', '" & TimeEdit2.Time & "', '" & CheckEdit7.CheckState & "')"
    9. 'MsgBox(cmd.CommandText)
    10. anzahl2 = cmd2.ExecuteNonQuery()
    11. If anzahl2 > 0 Then
    12. End If
    13. con2.Close()
    14. Application.DoEvents()
    Nein, eigentlich dient die Methode nur um zu überprüfen ob Datensätze geändert wurde. Das eigentliche Problem ist das Statement an sich.


    Edit by Manschula: Unnötiges Vollzitat entfernt! Der Zitierte steht direkt über dir!

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

    @programmer71: 3 Mal darfst du raten wieviele Zeilen bei einem insert betroffen sind...

    @Monk32: NUR mit Db-Parameter arbeiten. Dann erstickst du solche Syntax Fehler gleich im Keim.
    Bei einem Insert werden keine Datensätze geändert sondern es werden neue hinzugefügt. Und das ist zu 100% immer nur ein Einziger. (EDIT: es sei denn der Insert hat nen Fehler wie in deinem Fall)

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Ich seh das Bild nicht da bei uns in der Firma solche Filehoster blockiert sind.
    Jedoch musst du den Parametern den Datentyp der Spalte zuteilen. Dann wird im Hintergrund das Statement korrekt generiert.

    Bau deine Abfrage nach den DbParametern zusammen (such vielleicht auch noch danach @google oder so).
    Falls du dabei Probleme haben solltest kannst ja hier wieder reinschreiben.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten