Member 14852747 Ответов: 1

Как проверяется элемент checkedboxlist при его извлечении из базы данных


как checkedboxitem выбирается, когда он извлекается из базы данных в списке checkedbox. то, что я пробовал, это

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

SqlConnection con3 = new SqlConnection(ConfigurationManager.ConnectionStrings["Conec"].ConnectionString);
           SqlCommand cmd3;
           string sql3 = " SELECT Task From Todaywork where Username='" + Login.recuser + "' and Active='1'";
           try
           {
               con3.Open();
               cmd3 = new SqlCommand(sql3, con3);
               string item = cmd3.ExecuteScalar().ToString();
               cmd3.Dispose();
               con3.Close();


               checkedListBoxongoing.SelectedItem = item;





           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.Message);

           }

1 Ответов

Рейтинг:
1

Richard Deeming

Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

Вы также должны обернуть свои объекты команд и соединений в using блоки, чтобы убедиться, что они всегда утилизируются должным образом.

И вам придется иметь дело со случаями, когда ваша команда возвращается null:

const string sql3 = "SELECT Task FROM Todaywork WHERE Username = @Username AND Active = '1'";

using (SqlConnection con3 = new SqlConnection(ConfigurationManager.ConnectionStrings["Conec"].ConnectionString))
using (SqlCommand cmd3 = new SqlCommand(sql3, con3))
{
    cmd3.Parameters.AddWithValue("@Username", Login.recuser);
    
    con3.Open();
    object result = cmd3.ExecuteScalar();
    if (result != null && !Convert.IsDBNull(result))
    {
        checkedListBoxongoing.SelectedItem = Convert.ToString(result);
    }
}


Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]


Member 14852747

это дает мне ошибку ссылки на объект не была установлена....команда была нулевой

Richard Deeming

Опечатка в решении - command.ExecuteScalar() должно быть cmd3.ExecuteScalar().

Однако эта ошибка вызывает беспокойство. Это предполагает, что у вас есть еще один объект команды, хранящийся где-то, который не завернут в a using блок. Вы должны проверить, что хорошо.

Member 14852747

Все еще не работает даже я перепроверил код

Richard Deeming

"Не работать" это не очень полезный комментарий. Вам нужно точно объяснить, в чем проблема.