NeoAer Ответов: 2

Изменение текста метки из базы данных из выпадающего списка выбор C#


Я пытаюсь изменить текст меток на основе того, что пользователи выбирают из выпадающего списка, который заполняется с sql-сервера. Текст меток должен быть результатом запроса, который вызывается, когда пользователи выбирают что-то из выпадающего списка. Списки довольно длинные.

Пример
Пользователь выбирает, что его должность-уборщик из выпадающего списка.
Этикетка меняет офисный кодовый номер того, каким должен быть дворник.

Пользователи выбирают: дворник
Этикетка меняется на код: 54684.

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

using (SqlConnection conn = new SqlConnection("Database connection"))
                
{string myqueryconvt = "Select Office_Symbols FROM Office_Symbol_ID WHERE Office_Names = '" + ddlOfficeSymbolConvt.Text + "';";
SqlCommand cmd1 = new SqlCommand(myqueryconvt, conn);

lblOffice_SymbolsCovnt.Text = //???? I'm not sure what to call from this point If this is even correct.

2 Ответов

Рейтинг:
2

Richard Deeming

Цитата:
"Select Office_Symbols FROM Office_Symbol_ID WHERE Office_Names = '" + ddlOfficeSymbolConvt.Text + "';"

Только не это!

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

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

using (SqlConnection conn = new SqlConnection("Database connection"))
using (SqlCommand cmd = new SqlCommand("Select Office_Symbols FROM Office_Symbol_ID WHERE Office_Names = @Office_Names;", conn))
{
    cmd.Parameters.AddWithValue("@Office_Names", ddlOfficeSymbolConvt.Text);
    
    conn.Open();
    
    object result = cmd.ExecuteScalar();
    if (Convert.IsDBNull(result))
    {
        lblOffice_SymbolsCovnt.Text = string.Empty;
    }
    else
    {
        lblOffice_SymbolsCovnt.Text = Convert.ToString(result);
    }
}


Рейтинг:
0

RickZeeland

Вы можете использовать Executescalar так метод, см. пример здесь: Получение одного значения из базы данных | Microsoft Docs[^]