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

How to store value of SqlDataReader in an array?

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;

由于您迭代了 reader,因此您的 course_id 将成为 last 行的单元格值。

我建议你创建一个 List<int> 并在你的 while 语句中添加那些 course_id,使用 string.Join 生成带有逗号分隔符的字符串,这些值如 1, 2, 3,在查询中使用 IN 子句代替 =

course_id IN (1, 2, 3)

创建一个 List<int> 并在其中添加值。

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