Renjith_R Ответов: 2

Как передать специальные символы в запросе обновления


как передать длинный текст в запросе обновления в c#. я получаю ошибку при передаче большого текстового значения в базу данных. Я попробовал следующий запрос, когда значения передаются как одно слово, оно работает нормально. когда значения слишком длинные и содержат некоторые специальные символы, данные не обновляются..

пожалуйста, помогите

Заранее спасибо

Что я уже пробовал:

SqlCommand cmd1 = new SqlCommand("UPDATE ERP_Risk_Mgmt  set Account_name='" + strAccountName + "',Key_Risks='" + strkeyRisk + "',Mitigation_Plan ='" + strMitigationPlan + "',Contingency_plan='" + strContingencyPlan + "',Status_in_detail='" + srtStatusindetail + "',Rdate='" + strMonth + "',Pool_name='" + strPoolName + "',Group_name='" + strGroupName + "',Lastupdatedate='" + strlastupdatedate + "' where Account_name ='" + strAccountName + "'", con);
          
            con.Open();
            cmd1.ExecuteNonQuery();
            con.Close();

            lblSuccess.Visible = true;

F-ES Sitecore

Используйте параметризованные запросы. Google "ado.net параметризованные запросы". Это не только исправит вашу проблему, но и устранит уязвимость вашего кода к возможным атакам SQL-инъекций.

2 Ответов

Рейтинг:
12

OriginalGriff

Совсем не так.
Никогда не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.

Использование параметров не только предотвратит ваш текущий риск SQL-инъекции, но и одновременно решит вашу существующую проблему:

using (SqlCommand cmd1 = new SqlCommand("UPDATE ERP_Risk_Mgmt  set Account_name=@AN, Key_Risks=@KR ,Mitigation_Plan=@MP, Contingency_plan=@CP, Status_in_detail=@SID, Rdate=@RD, Pool_name=@PN, Group_name=@GN, Lastupdatedate=@LUD where Account_name=@AN", con))
   {
   cmd1.Parameters.AddWithValue("@AN", strAccountName);
   ...


Рейтинг:
10

Patrice T

Цитата:
Как передать специальные символы в запросе обновления

Используйте параметры, это защитит вас от" SQL-инъекции " и решит вашу проблему тоже.

Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь уязвимости под названием "SQL injection", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа рухнет. Если пользователь вводит имя типа "Брайан О'Коннер", это может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция-Википедия[^]
SQL-инъекция[^]