Insert Into Anweisung Syntaxfehler

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von mrMo.

    Insert Into Anweisung Syntaxfehler

    Hi, ich versuche mich gerade an einer kleinen Datenbank. Es sollen lediglich die Daten aus 3 Textboxes in die Datenbank eingefügt werden. Doch ich bekomme die Fehlermeldung Syntaxfehler in der INSERT INTO-Anweisung. Ich habe bereits in verschieden Threads mit ähnlichem Problem nachgeschaut doch ich konnte dort keine Lösung finden. Deswegen hoffe ich das irgentjemand meinen Fehler sieht.


    VB.NET-Quellcode

    1. Dim con As New OleDb.OleDbConnection
    2. Dim cmd As New OleDb.OleDbCommand
    3. con.ConnectionString =
    4. "Provider=Microsoft.ACE.OLEDB.12.0;" &
    5. "Data Source=R:\Programs\PasswortDatenbank\Passcodes.accdb"
    6. cmd.Connection = con
    7. Try
    8. con.Open()
    9. cmd.CommandText = "INSERT INTO Passcodes (website,username,password) VALUES ('" & TextBox1.Text & "', '" & TextBox2.Text & "', '" & TextBox3.Text & "')"
    10. If cmd.ExecuteNonQuery() > 0 Then
    11. MsgBox("Saved")
    12. End If
    13. Catch ex As Exception
    14. MsgBox(ex.Message)
    15. End Try
    16. con.Close()
    Hallo erstmal,

    also einen Fehler habe ich jetzt auf die schnelle nicht gefunden, hier auch mal eine Verbindung von mir,
    wo ich mal deine Sachen Eingetragen habe.

    Hast du auf deinem Rechner auch Access installiert?
    Falls ja würde ich mir die AccessDatabaseEngine mal Downloaden, das war anfangs auch mein Fehler gewesen.

    Hier mal der Link:
    microsoft.com/de-de/download/details.aspx?id=13255

    VB.NET-Quellcode

    1. Private Function DB_Insert() As Boolean
    2. Dim DBCount As Integer
    3. Dim DBCon As New OleDbConnection
    4. Dim DBCom As New OleDbCommand
    5. DBCon.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=R:\Programs\PasswortDatenbank\Passcodes.accdb;"
    6. DBCom.Connection = DBCon
    7. DBCom.CommandText = "INSERT INTO Passcodes (website,username,password) VALUES ('" & _
    8. Textbox1.Text & "','" & _
    9. Textbox2.Text & "','" & _
    10. Textbox3.Text & "')"
    11. Try
    12. DBCon.Open()
    13. DBCount = DBCom.ExecuteNonQuery()
    14. If DBCount > 0 Then : MessageBox.Show("Saved")
    15. Return True
    16. Else : Return False
    17. End If
    18. DBCon.Close()
    19. Catch ex As Exception
    20. MessageBox.Show(ex.ToString)
    21. Finally
    22. DBCon.Close()
    23. End Try
    24. End Function
    Keep Calm And Color Your Life
    @Cypress Access und AccessDataEngine ist beides installiert, also daran kann es eigentlich nicht gescheitert sein.

    Seltsamerweise hat dein Code funktioniert. Ich verstehe zwar nicht ganz wieso das bei mir nicht geklappt hat aber dennoch Danke!
    Vielleicht hat es etwas damit zu tun wie ich den CommandText abgereiht habe. Würde mich aber wundern wenn es da dran lag.
    Mach mal nen Screenshot der Fehlermeldung und kade den hier hoch. Dein SQL-Statement sieht korrekt aus (wenn auch suboptimal, da es Injektions zu lässt).

    Was genau(!) steht in den TextBoxen drin, wenn du testest?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @mrMo Danke für deine Antwort, aber ich habe den Rat von @ErfinderDesRades befolgt und das ganze jetzt mit DBParametern gemacht und dabei entstehen keine Fehler

    Hier nochmal wie ich es jetzt gemacht habe:

    VB.NET-Quellcode

    1. Private Sub Verbinden()
    2. con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=R:\Programs\PasswortDatenbank\Passcodes.accdb;"
    3. cmd.Connection = con
    4. con.Open()
    5. End Sub
    6. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    7. Verbinden()
    8. Try
    9. cmd.CommandText = "INSERT INTO Passcodes (wbsite,usname,psw) VALUES (@website, @username, @password)"
    10. cmd.Parameters.Add("@website", OleDb.OleDbType.VarChar).Value = WebsiteBox.Text
    11. cmd.Parameters.Add("@username", OleDb.OleDbType.VarChar).Value = UsernameBox.Text
    12. cmd.Parameters.Add("@password", OleDb.OleDbType.VarChar).Value = PasswordTextBox.Text
    13. cmd.ExecuteNonQuery()
    14. Catch ex As Exception
    15. MsgBox(ex.Message)
    16. End Try
    17. con.Close()
    18. MsgBox("Daten gesichert")
    19. End Sub

    rbsnH schrieb:

    DBParametern


    Sehr gute Entscheidung. Bei der anderen Variante rauch nämlich alles ab wenn nen ' drin steht. Mal davin abgesehen, dass man dort easy SQL-Injektions hätte machen können
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen