hussainroyal Ответов: 1

Ado.net проблема combobox


Я хочу выбрать из первого выпадающего списка номер поезда и во второй комбобокс дай мне повозку, поезда (номер вагона ) я сделал базу: что первой таблице хранятся идентификатор поезд и во второй таблице хранятся вагон идентификатор + идентификатор железнодорожного внешний ключ я попытался этот код и свою работу, но когда я выбрать другой ID не меняется вагона комбобокс результат

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

adapter = new SqlDataAdapter("select * from train", cn);
            SqlCommand cmd = new SqlCommand("select * from train", cn);
            cmd.Parameters.Clear();
            adapter.Fill(ds, "train");
            
            comboBox1.DataSource = ds.Tables["train"];
            comboBox1.DisplayMember = "id";
            comboBox1.ValueMember = "id";
           
            
       adapter = new SqlDataAdapter("select  id_w  from wagon  where id='" + comboBox1.SelectedValue + "'", cn);
        
            
                adapter.Fill(ds, "wagon");

        //    adapter1.SelectCommand.Parameters.Clear();
            comboBox2.DataSource = ds.Tables["wagon"];
                comboBox2.DisplayMember = "id_w";
                comboBox2.ValueMember = "id_w";

Maciej Los

А какой у тебя вопрос?

Richard Deeming

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

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

adapter = new SqlDataAdapter("select id_w from wagon where id = @id", cn);
adapter.SelectCommand.Parameters.AddWithValue("@id", comboBox1.SelectedValue);

1 Ответов

Рейтинг:
2

Animesh Datta

Привет,
комбинированный список.Разделе мы рассмотрим событие происходит, когда свойство SelectedIndex изменилось.
Вы должны передать train_id в событие train_SelectedIndexChanged.
т.е.,

private void train_SelectedIndexChanged(object sender,System.EventArgs e)
    {
       //Load the wagon_details and populate in combobox.
    }

спасибо