Вставка параметризованного запроса
Я пытаюсь вставить информацию в базу данных Mysql, используя этот код...
private void SubmitBtn_Click(object sender, EventArgs e) { SqlCommand cmd = new SqlCommand ("INSERT into [Materials Inventory] (Barcode, Material, Location, Quanitiy, [Date Added]) VALUES ('" + textBox3.Text + "','" + textBox4.Text + "', '" + textBox5.Text + "','" + textBox6.Text + "','" + textBox7.Text + "' )",sqlcon); cmd.Parameters.AddWithValue("Barcode", textBox3); cmd.Parameters.AddWithValue("Material", textBox4); cmd.Parameters.AddWithValue("Location", textBox5); cmd.Parameters.AddWithValue("Quantity", textBox6); cmd.Parameters.AddWithValue("[Date Added]", textBox7); cmd.ExecuteNonQuery();
Но я получаю эту ошибку при запуске приложения
Необработанное исключение типа 'System.InvalidOperationException' произошло в System.Data.dll
Дополнительная информация: ExecuteNonQuery требует открытого и доступного соединения. Текущее состояние соединения-закрыто.
Что я уже пробовал:
Использование непераметризованного запроса,
Переписывание кода
Richard Deeming
Еще раз:
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]
В один прекрасный день вы можете обратить внимание на это предупреждение. Вот надеюсь, что это произойдет до ваша база данных уничтожена, или личная информация ваших пользователей просочилась и продана в темной паутине.