Входная строка не была в правильном формате исправлена
Я знаю, что это может привести к sql-инъекции, но я просто хочу знать, как исправить эту ошибку.
У меня есть БД с несколькими столбцами, и я использую этот код для вставки в таблицу:
ed.addproy("avance_presupuestario", "nombre,usuario,año,proyecto,porcentajeejecucionglobal,porcentajeejecucionpresupuestaria,fecha", name.Text + "','" + user.Text + "','"+yr.Text+"','" + proy.Text + "','" + Int32.Parse(tec.Text) + "','" + Int32.Parse(pre.Text) + "','" + date.Text); System.Threading.Thread.Sleep(10); //name.Text = ""; //user.Text = ""; //proy.Text = ""; tec.Text = ""; pre.Text = ""; date.Text = "";
это класс редактирования ("ed")
using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary> /// Summary description for EditClass /// </summary> /// public class EditClass { MySql.Data.MySqlClient.MySqlConnection conn; MySql.Data.MySqlClient.MySqlCommand cmd; MySql.Data.MySqlClient.MySqlDataReader reader; String queryStr; String proyecto = ""; public static String proyecto2 = ""; String cargo = ""; String usuario = ""; public EditClass() { // // TODO: Add constructor logic here // } public void addproy(String table, String columns, String data) { String connString = System.Configuration.ConfigurationManager.ConnectionStrings["web"].ToString(); conn = new MySql.Data.MySqlClient.MySqlConnection(connString); conn.Open(); queryStr = ""; queryStr = "INSERT INTO " + table + " (" + columns + ")" + "VALUES('" + data + "')"; cmd = new MySql.Data.MySqlClient.MySqlCommand(queryStr, conn); cmd.ExecuteReader(); conn.Close(); //id_area.Text = ""; } public void deleteproy(String column, String table, String data) { String connString = System.Configuration.ConfigurationManager.ConnectionStrings["web"].ToString(); conn = new MySql.Data.MySqlClient.MySqlConnection(connString); conn.Open(); queryStr = ""; queryStr = "DELETE FROM "+table+" WHERE "+column+" like'" + data + "'"; cmd = new MySql.Data.MySqlClient.MySqlCommand(queryStr, conn); reader = cmd.ExecuteReader(); while (reader.HasRows && reader.Read()) { } reader.Close(); conn.Close(); } }
Пожалуйста, помогите мне исправить эту ошибку.
Спасибо.
Что я уже пробовал:
Я попытался изменить типы переменных и даже попытался вернуться к более ранней версии, но получил тот же результат.
RossMW
Проверьте структуру таблицы на соответствие тому, что вы пытаетесь вставить. Кроме того, вы можете скопировать текст QueryStr и запустить его непосредственно в базу данных и expeiement, чтобы узнать, где он идет не так. Вы также должны быть осторожны с форматами дат, так как sql имеет плохую привычку по умолчанию возвращаться к американскому формату.
Member 10850253
Я проверил, и начальный и закрывающий теги находятся в классе редактирования, а остальные-в первой строке кода. У вас есть еще какие-нибудь идеи, чтобы помочь мне исправить это? Спасибо.
RossMW
Извините, не хватает информации, чтобы определить больше вариантов. Пактикулярно вокруг структуры базы данных. Это, по-видимому, неправильная конструкция sql-оператора (следовательно, запустите его непосредственно в базе данных для тестирования). Многие из этих проблем могут быть решены с помощью параметров, выделенных OriginalGriff. Это хорошая практика, чтобы попасть в нее. Особенно там, где у пользователя может быть какой-то отдаленный шанс войти в него.