ich Sie SQL-Parameter wird dringend empfohlen beziehen verwenden. Dies dient zur Reduzierung von Syntaxproblemen, stoppt jedoch die SQL-Injektion. Weitere Informationen hierzu finden Sie unter Bobby Tables.
Ich habe auch festgestellt, dass Sie ExecuteReader
verwenden. Dies wird normalerweise für ausgewählte Anweisungen verwendet. Für Einsätze und Updates sollten Sie ExecuteNonQuery
verwenden. Werfen Sie einen Blick auf die für weitere Informationen.
Wenn Sie nicht bereits habe ich schlage vor, Sie auch Using implementieren:
Manchmal erfordert Ihr Code eine nicht verwaltete Ressource, wie ein Datei-Handle, ein COM-Wrapper oder eine SQL-Verbindung. Ein Benutzungsblock garantiert die Entsorgung einer oder mehrerer solcher Ressourcen, wenn Ihr Code mit ihnen fertig ist. Dies macht sie für anderen Code verfügbar.
Mit diesen Änderungen Ihr Code wie folgt aussehen würde:
Using con As New MySqlConnection(yourConnectionString),
cmd As New MySqlCommand("INSERT INTO baza.artikli (kod, naziv, nabavna, prodazna, ddv, kolicina, opis, opis2, mkproizvod, profit, proizvoditel) VALUES (@kod, @naziv, @nabavna, @prodazna, @ddv, @kolicina, @opis, @opis2, @mkproizvod, @profit, @proizvoditel)", con)
con.Open()
cmd.Parameters.Add("@kod", MySqlDbType.[Type]).Value = TextBoxBarkod.Text
cmd.Parameters.Add("@naziv", MySqlDbType.[Type]).Value = TextBoxNaziv.Text
cmd.Parameters.Add("@nabavna", MySqlDbType.[Type]).Value = kupovnacena
cmd.Parameters.Add("@prodazna", MySqlDbType.[Type]).Value = prodaznacena
cmd.Parameters.Add("@ddv", MySqlDbType.[Type]).Value = ddv
cmd.Parameters.Add("@kolicina", MySqlDbType.[Type]).Value = kolicina
cmd.Parameters.Add("@opis", MySqlDbType.[Type]).Value = TextBoxOpis.Text
cmd.Parameters.Add("@opis2", MySqlDbType.[Type]).Value = TextBoxOpis2.Text
cmd.Parameters.Add("@mkproizvod", MySqlDbType.[Type]).Value = mkpr
cmd.Parameters.Add("@profit", MySqlDbType.[Type]).Value = profit
cmd.Parameters.Add("@proizvoditel", MySqlDbType.[Type]).Value = TextBoxProizvoditel.Text
cmd.ExecuteNonQuery()
End Using
Bitte beachte, dass ich MySqlDbType.[Type]
verwendet haben. Sie sollten [Type]
durch den Datentyp ersetzen, den Sie in Ihrer Datenbank verwendet haben.
Das wird nicht funktionieren, nur knapp sein Ziel liefern alle Felder verhindern ... der Einsatz würde fehlschlagen und die Auswahl gewohnt passieren. Wenn der Einschub nur eine Spalte hätte, dann würde ja das funktionieren ... – Codexer
Guter Punkt, zumindest hätte es einen Fehler erzeugt ;-). Einige Änderungen vorgenommen. – LSA