Это сообщение об ошибке
MySql.Data.MySqlClient.MySqlException: 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '''')' at line 1'
это мой запрос
MySqlCommand cmd = new MySqlCommand("insert into subject(id, code, title, unit) values('" + textBox1.Text + "',''" + textBox2.Text + "',''" + textBox3.Text + "',''" + textBox4.Text + "')", conn);
Я просматривал это уже более часа, но все еще получаю эту ошибку
Вы проверили, что полученный запрос, сформированный после выполнения этой строки, является правильным? Поскольку я вижу здесь + " ',' ' " +
, в предоставленном запросе не совпадают одинарные кавычки.
Привет @Vince Garcia, рекомендуется использовать Параметризованный запрос, так как это упростит добавление значений в запрос, а также предотвратит SQL-инъекция
Кроме того, для ответа @ Kazi на исправление неправильного запроса.
В качестве альтернативы рекомендуется использовать Параметризованный запрос.
ОБНОВЛЕНО: Как было предложено @CodeCaster для проблем, упомянутых в статье Прекратить использование AddWithValue (), я переключаю все AddWithValue()
на Add("@Parameter", SqlDbType).Value
MySqlCommand cmd = new MySqlCommand("insert into subject(id, code, title, unit) values(@ID, @Code, @Title, @Unit)", conn);
cmd.Parameters.Add("@ID", SqlDbType.int).Value = textBox1.Text;
cmd.Parameters.Add("@Code", SqlDbType.Varchar, 10).Value = textBox2.Text;
cmd.Parameters.Add("@Title", SqlDbType.NVarchar, 50).Value = textBox3.Text;
cmd.Parameters.Add("@Unit", SqlDbType.Varchar).Value = textBox4.Text;
А также убедитесь, что значение, которое вы передаете с SqlDbType
должен соответствовать типу данных как соответствующему столбцу таблицы базы данных.
Причины использования параметризованного запроса:
Ссылка: Подготовить заявление MySQL
Я вижу, у вас много несоответствующих одинарных кавычек. Сделайте себе одолжение и используйте параметры вместо объединения строк. Намного проще написать код, не напрягая глаз при подсчете символов кавычек, а также это более безопасный способ защиты от уязвимостей, связанных с SQL-инъекциями.