如何在数组中存储SqlDataReader的值?

时间:2016-06-11 11:50:45

标签: c# sqldatareader

while循环中的course_id有多个值。我想在GridView中显示所有值,但只显示最后一个值。我怎样才能做到这一点?我必须将course_id存储在数组中吗?

int course_id=0;
string query_select_course = "SELECT course_id FROM course_program where program_id = '" + program_id + "' ";

SqlDataReader dr_course = DataAccess.selectDataReader(query_select_course);
while (dr_course.Read())
{
  course_id = (int)dr_course.GetValue(0); // this course_id should have multiple values.
}
dr_course.Close();

string query_select_course_name = "SELECT course_title FROM courses where course_id = '" + course_id + "' ";
DataTable dt = DataAccess.selectData(query_select_course_name);
course_dataGridView.DataSource = dt;

2 个答案:

答案 0 :(得分:4)

制作List<int>并在其中添加值。

List<int> course=new List<int>();
while (dr_course.Read())
{
 course.Add((int)dr_course.GetValue(0));
}

答案 1 :(得分:1)

由于您对阅读器进行了迭代,因此course_id将是 last 行的单元格值。

我建议您创建List<int>并在course_id语句中添加while,使用string.Join生成逗号分隔符字符串,其中包含{{1}在您的查询中使用1, 2, 3子句代替IN,例如;

=