Syntaxfehler in der INSERT INTO-Anweisung von visual basic
ich weiß nicht, ob dies beantwortet wurde oder nicht aber ich habe problem mit einem Syntaxfehler in der insert into-Anweisung.
heres mein code, ich benutze visual basic 2010 und ms access 2010 als meine Datenbank
Imports System.Data.OleDb
Imports Comprehensive.Form1
Public Class Form2
Dim cnn As New OleDb.OleDbConnection
Private Sub RefreshData()
If Not cnn.State = ConnectionState.Open Then
cnn.Open()
End If
Dim da As New OleDb.OleDbDataAdapter("SELECT * FROM items ORDER BY ID", cnn)
Dim dt As New DataTable
da.Fill(dt)
Form1.DataGridView1.DataSource = dt
cnn.Close()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim cmd As New OleDbCommand
Try
If Not cnn.State = ConnectionState.Open Then
cnn.Open()
End If
cmd.Connection = cnn
cmd.CommandText = "INSERT INTO Items (Item_Name, Item_Type, Date_Added)" + "'VALUES('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "');'"
cmd.ExecuteNonQuery()
RefreshData()
Catch ex As Exception
MessageBox.Show(ex.Message & " - " & ex.Source)
cnn.Close()
End Try
End Sub
Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'TODO: This line of code loads data into the 'ShitdataDataSet.Items' table. You can move, or remove it, as needed.
Me.ItemsTableAdapter.Fill(Me.ShitdataDataSet.Items)
cnn = New OleDb.OleDbConnection
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=shitdata.mdb;"
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Close()
End Sub
Ende Klasse
- Große SQL-injection problem, und es sollte keine
'
WERTE vor und nach dem Ende;
. - Sie haben ein zusätzliches einzelnes Zitat, bevor Ihr
VALUES
- Klausel, und es sollte ein Raum zwischen dem schließen paranthesis in Ihre Liste der Spalte und dieVALUES
keyword, sowie eine zusätzliche single Zitat am Ende deiner Aussage. - Geben Sie mir parametrisierte SQL -, oder gib mir den Tod!!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zeile EINFÜGEN enthält einfache Anführungszeichen nicht benötigt werden, bevor die WERTE Stichwort UND am Ende der sql-Anweisung, entfernen Sie Sie
Aber wie üblich, Sie nicht mit dem schreiben von sql-Befehlen in dieser Weise.
Sie sollte immer verwenden Sie eine parametrisierte Abfrage (SQL-Injektionen)
Und als Letzte Anmerkung, im Hinterkopf behalten, dass, wenn Sie einen datetime in die Tabelle (wie es sollte) für die Date_Added Feld, dann müssen Sie zum konvertieren von "textbox3" - Werts in einen datetime.
Wenn dies der Fall ist, dann empfehle ich, zu schauen, diese Frage wo ist das problem, das einfügen von datetime-Werten in access-Datenbanken wurde behoben.