Как получить идентификатор выбранного элемента в combobox C#
Привет, я работаю с combobox в своем проекте windowsForm.
Я получаю атрибут "LIB" из табличного значения sql server, показанного в выпадающем списке.
Мне нужно получить еще один атрибут "GUID" selectedItem и передать его из первой формы (FormMaster) в другую форму (FormImport).
Что я уже пробовал:
int ScénarioIndex = comboBox3.SelectedIndex; SqlCommand cmd = new SqlCommand("SELECT [OID] FROM [AffecAnalytique].[dbo].[DESCRIPTIF] WHERE [LIBELLE]='" + comboBox3.Items[ScénarioIndex] + "' ", con); con.Open(); SqlDataReader rdr = cmd.ExecuteReader(); if (rdr.HasRows) { string strOIDe = (string)rdr["OID"]; MessageBox.Show(strOIDe,"OID"); } con.Close();
Richard MacCutchan
Где находится GUID-в выпадающем списке или в базе данных?
houssem eddine ayari
В базе данных
Richard Deeming
SqlCommand cmd = new SqlCommand("SELECT [OID] FROM [AffecAnalytique].[dbo].[DESCRIPTIF] WHERE [LIBELLE]='" + comboBox3.Items[ScénarioIndex] + "' ", con);
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]
using (SqlCommand cmd = new SqlCommand("SELECT [OID] FROM [AffecAnalytique].[dbo].[DESCRIPTIF] WHERE [LIBELLE] = @LIBELLE", con)) { cmd.Parameters.AddWithValue("@LIBELLE", comboBox3.Items[ScénarioIndex]); con.Open(); object result = cmd.ExecuteScalar(); if (result != null && !Convert.IsDBNull(result)) { string strOIDe = (string)result; MessageBox.Show(strOIDe,"OID"); } }
houssem eddine ayari
Ничего не возвращается. Даже пустого почтового ящика нет
Richard Deeming
Тогда в вашей базе данных нет соответствующей записи.
houssem eddine ayari
Значение LIBELLE, выбранное с помощью combobox, существует в моей базе данных. Я только что обновил свой код, чтобы показать messagebox внутри условия if, и ничего не было показано.
Richard MacCutchan
Используйте отладчик для проверки строки SQL, чтобы убедиться, что она передает допустимые данные.