Как мне отобразить все значения из БД? C# ASP.NET
Когда я выбираю из выпадающего списка только одну запись из базы данных в списке флажков, но в базе данных есть еще несколько записей с тем же именем субъекта, но они не отображаются. Выпадающий список заполняется с помощью таблицы subjects, а список checkboxlist отображается с помощью данных из таблицы CLO. пожалуйста помочь.
Это мой код.
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { { CheckBoxList1.Items.Clear(); } String strConnString = ConfigurationManager.ConnectionStrings["facultylogConnectionString"].ConnectionString; String strQuery = "Select CourseOutcomes from CLO,subjects where " + " SubjectName = @Subject_Name"; SqlConnection con = new SqlConnection(strConnString); SqlCommand cmd = new SqlCommand(); cmd.Parameters.AddWithValue("Subject_Name", DropDownList1.SelectedItem.Value); cmd.CommandType = CommandType.Text; cmd.CommandText = strQuery; cmd.Connection = con; con.Open(); using(SqlDataReader sdr = cmd.ExecuteReader()) { sdr.Read(); ListItem item = new ListItem(); item.Text = sdr["CourseOutcomes"].ToString(); CheckBoxList1.Items.Add(item); } con.Close(); }
Что я уже пробовал:
Я также пробовал использовать цикл while, но он отображает одну и ту же запись базы данных 5 раз.
{ CheckBoxList1.Items.Clear(); } String strConnString = ConfigurationManager.ConnectionStrings["facultylogConnectionString"].ConnectionString; String strQuery = "select CourseOutcomes from CLO,subjects where " + " SubjectName = @Subject_Name"; SqlConnection con = new SqlConnection(strConnString); SqlCommand cmd = new SqlCommand(); cmd.Parameters.AddWithValue("Subject_Name", DropDownList1.SelectedItem.Value); cmd.CommandType = CommandType.Text; cmd.CommandText = strQuery; cmd.Connection = con; try { con.Open(); SqlDataReader sdr = cmd.ExecuteReader(); while (sdr.Read()) { ListItem item = new ListItem(); item.Text = sdr["CourseOutcomes"].ToString(); CheckBoxList1.Items.Add(item); } } catch (Exception ex) { throw ex; } finally { con.Close(); con.Dispose(); }
Richard MacCutchan
В первом примере кода Вы извлекаете из считывателя только одну запись. Во втором блоке вы должны извлечь все записи, которые были возвращены. Вам нужно запустить его в отладчике, чтобы точно увидеть, что возвращается.
Richard Deeming
catch (Exception ex) { throw ex; }
Не делай этого. Вы только что отбросили трассировку стека исключения, что значительно затруднит поиск причины любых проблем.
Если вам действительно нужно повторно создать исключение, просто используйте
throw;
вместо throw ex;
:catch (Exception ex) { throw; }
Но в этом случае, поскольку вы ничего не делаете с исключением, просто удалите
catch
блок.finally { con.Close(); con.Dispose(); }
Если вы обернете свой
SqlConnection
, SqlCommand
, и SqlDataReader
объекты в using
блок, тебе это не понадобится finally
блок.using (SqlConnection con = new SqlConnection(strConnString)) using (SqlCommand cmd = new SqlCommand()) { cmd.Parameters.AddWithValue("Subject_Name", DropDownList1.SelectedItem.Value); cmd.CommandType = CommandType.Text; cmd.CommandText = strQuery; cmd.Connection = con; con.Open(); using (SqlDataReader sdr = cmd.ExecuteReader()) { while (sdr.Read()) { ListItem item = new ListItem(); item.Text = sdr["CourseOutcomes"].ToString(); CheckBoxList1.Items.Add(item); } } }
candijen
Спасибо я удалил блок try но не могу понять почему
когда я выбираю Subject_Name из выпадающего списка, я хочу, чтобы он дал мне CourseOutcomes из таблицы CLO в соответствии с именами субъектов в флажках, но он дает мне только один CourseOutcome, но в таблице есть еще несколько для того же имени субъекта.
вот эти две таблицы
Создайте таблицу [dbo].[тематика] (
[Subject_Code] NVARCHAR (50) NOT NULL,
[имя субъекта] NVARCHAR (50) NOT NULL,
Первичный ключ КЛАСТЕРИЗОВАН ([Subject_Code] ASC)
);
Создайте таблицу [dbo].[Кло] (
[Id] INT NOT NULL,
[Имя субъекта] NVARCHAR (50) NOT NULL,
[CourseOutcomes] NVARCHAR (500) NOT NULL,
Кластеризованный первичный ключ ([Id] ASC)
);
Содержание выглядит примерно так
Subject_Code Subject_Name
ETM203 последние тенденции в IT
ETM302 технологии управления
ETM316 цифровой маркетинг
ISM303 потребительское поведение
STM302 Программная инженерия
Идентификатор subjectname в CourseOutcomes
1 Последние тенденции в ИТ объясняют основы последних тенденций в технологии.
2 последние тенденции в ИТ описывают различные приложения последних тенденций.
3 последние тенденции в ИТ объясняют важность развития технологий.
4 последние тенденции в ИТ обсуждаются ключевые моменты и теоретический аспект.
5 цифровой маркетинг опишите основы цифрового медиа-маркетинга.
6 Цифровой Маркетинг Привет
7 Цифровой Маркетинг Привет
DerekT-P
Какова ваша структура d/b? Ваш SQL-оператор
Выберите CourseOutcomes от Кло,субъектах, где subjectname в = @subjectname в
Таким образом, вы запрашиваете две отдельные таблицы, но не определяете отношения между ними. Запустите этот запрос в ManagementStudio или любом другом инструменте, который вы используете, и вы увидите результаты, которые получает ваш код. И, как сказал Ричард м выше, использование отладчика для пошагового просмотра кода и изучения того, что на самом деле происходит, обычно является лучшим способом понять, что вы просите свой код сделать!
candijen
вот эти две таблицы
Создайте таблицу [dbo].[тематика] (
[Subject_Code] NVARCHAR (50) NOT NULL,
[имя субъекта] NVARCHAR (50) NOT NULL,
Первичный ключ КЛАСТЕРИЗОВАН ([Subject_Code] ASC)
);
Создайте таблицу [dbo].[Кло] (
[Id] INT NOT NULL,
[Имя субъекта] NVARCHAR (50) NOT NULL,
[CourseOutcomes] NVARCHAR (500) NOT NULL,
Кластеризованный первичный ключ ([Id] ASC)
);
Содержание выглядит примерно так
Subject_Code Subject_Name
ETM203 последние тенденции в IT
ETM302 технологии управления
ETM316 цифровой маркетинг
ISM303 потребительское поведение
STM302 Программная инженерия
Идентификатор subjectname в CourseOutcomes
1 Последние тенденции в ИТ объясняют основы последних тенденций в технологии.
2 последние тенденции в ИТ описывают различные приложения последних тенденций.
3 последние тенденции в ИТ объясняют важность развития технологий.
4 последние тенденции в ИТ обсуждаются ключевые моменты и теоретический аспект.
5 цифровой маркетинг опишите основы цифрового медиа-маркетинга.
6 Цифровой Маркетинг Привет
7 Цифровой Маркетинг Привет
Я даже не знаю, что с ними делать.
но моя проблема заключается в том, что когда я выбираю Subject_Name из выпадающего списка, я хочу, чтобы он дал мне CourseOutcomes из таблицы CLO в соответствии с именами субъектов в флажках, но он дает мне только один CourseOutcome, но есть еще в таблице для того же имени субъекта