В своей работе с C# я сталкивался с подобными ошибками взаимодействия с базой данных MySQL. На первый взгляд, ошибка ″You have an error in your SQL syntax″ указывает на проблемы с синтаксисом SQL запроса. Особенно в данном коде можно заметить ошибку в строке UPDATE, где неправильно используются одинарные кавычки.
Здесь я расскажу о своем личном опыте работы с подобными ошибками и предложу варианты решения.Прежде всего, важно понять, что ошибка возникает из-за неправильного синтаксиса запроса в строке UPDATE. База данных MySQL ожидает, что каждое поле будет заключено в одинарные кавычки (»), а не двойные кавычки (″″).
Ваш код в этой строке⁚
csharp
string quer @″UPDATE product set Title ″ title ″’,ProductTypeID (SELECT ID from producttype where Title ‘″ tup ″’),ArticleNumber″ atr ″’,Image ‘″ c ″’,ProductionPersonCount ″ per ″,ProductionWorkshopNumber ″ nim ″’,MinCostForAgent″ min ″’ WHERE ID ″ id ″’;″;
Содержит неправильно расставленные кавычки. Рекомендую вам использовать параметризованные запросы, чтобы избежать подобных проблем с синтаксисом.
Например, вы можете изменить ваш код следующим образом⁚
csharp
string quer @″UPDATE product SET Title @title, ProductTypeID (SELECT ID FROM producttype WHERE Title @tup), ArticleNumber @atr, Image @c, ProductionPersonCount @per, ProductionWorkshopNumber @nim, MinCostForAgent @min WHERE ID @id″;
MySqlCommand cov new MySqlCommand(quer, conn);
cov.Parameters.AddWithValue(″@title″, title);
cov.Parameters.AddWithValue(″@tup″, tup);
cov.Parameters.AddWithValue(″@atr″, atr);
cov;Parameters.AddWithValue(″@c″, c);
cov.Parameters.AddWithValue(″@per″, per);
cov.Parameters.AddWithValue(″@nim″, nim);
cov.Parameters.AddWithValue(″@min″, min);
cov.Parameters.AddWithValue(″@id″, id);
cov.ExecuteNonQuery;
Таким образом, вы используете параметры вместо конкатенации строк, что позволяет избежать ошибок в синтаксисе SQL запроса и предотвращает возможность атаки SQL-инъекцией.
Важно также убедиться, что значения переменных, таких как `title`, `tup`, `atr`, `c`, `per`, `nim`, `min` и `id`, соответствуют типам данных столбцов в таблице `product`. Если тип данных не совпадает, могут возникнуть проблемы при выполнении запроса.
В моем опыте использование параметризованных запросов является надежным и безопасным способом работы с базой данных и избегания ошибок синтаксиса SQL.