我强烈建议您使用 SQL 参数。这是为了减少语法问题,但更重要的是停止 SQL 注入。请参阅Bobby Tables 了解更多详情。
我还注意到您使用的是ExecuteReader。这通常用于选择语句。对于插入和更新,您应该使用ExecuteNonQuery。请查看documentation 了解更多信息。
如果你还没有,我也建议你实现Using:
有时您的代码需要非托管资源,例如文件句柄、COM 包装器或 SQL 连接。 Using 块保证在您的代码完成后处理一个或多个此类资源。这使得它们可供其他代码使用。
通过这些更改,您的代码将如下所示:
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
请注意,我使用了MySqlDbType.[Type]。您需要将 [Type] 替换为您在数据库中使用的数据类型。