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

C# 如何在数组中存储SqlDataReader的值?,c#,sqldatareader,C#,Sqldatareader,while循环中的课程id有多个值。我想在GridView中显示所有值,但只显示最后一个值。我该怎么做?我必须在数组中存储课程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(q

while循环中的课程id有多个值。我想在GridView中显示所有值,但只显示最后一个值。我该怎么做?我必须在数组中存储课程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;

因为您迭代了阅读器,所以您的
课程id
将是最后一行的单元格值

我建议您创建一个
列表
并将那些
课程id
添加到您的
while
语句中,使用
字符串。Join
使用逗号分隔符字符串生成那些值,如
1、2、3
,在
子句中使用
而不是在查询中使用
=

course_id IN (1, 2, 3)

因为您迭代了阅读器,所以您的
课程id
将是最后一行的单元格值

我建议您创建一个
列表
并将那些
课程id
添加到您的
while
语句中,使用
字符串。Join
使用逗号分隔符字符串生成那些值,如
1、2、3
,在
子句中使用
而不是在查询中使用
=

course_id IN (1, 2, 3)
制作一个
列表
并在其中添加值

List<int> course=new List<int>();
while (dr_course.Read())
{
 course.Add((int)dr_course.GetValue(0));
}
List课程=新建列表();
while(dr_course.Read())
{
course.Add((int)dr_course.GetValue(0));
}
制作一个
列表
并在其中添加值

List<int> course=new List<int>();
while (dr_course.Read())
{
 course.Add((int)dr_course.GetValue(0));
}
List课程=新建列表();
while(dr_course.Read())
{
course.Add((int)dr_course.GetValue(0));
}

获取值不需要两次查询。JOIN sql子句允许您只使用一个查询就可以完成工作您不需要两个查询就可以获得值。JOIN sql子句允许您只需一个查询即可完成您的工作,但比我如何在gridview中显示所有值更重要?但比我如何在gridview中显示所有值更重要?您还需要使用类似的方法
string query\u select\u course\u name=“select course\u title FROM courses where course\u id in”(“+string.JOIN(“,”,course)+”)
您还需要使用类似的内容
string query\u select\u course\u name=“select course\u title FROM courses where course\u id IN”(““+string.Join”(“,”,courses)+“)”