2016-06-11 4 views
0

while 루프 내의 course_id에는 여러 값이 있습니다. GridView에서 모든 값을 표시하려고했지만 마지막 값만 표시됩니다. 내가 어떻게 할 수 있니? course_id를 배열에 저장해야합니까? 당신이 당신의 독자를 반복하기 때문에배열에 SqlDataReader의 값을 저장하는 방법은 무엇입니까?

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; 
+1

값을 얻기 위해 두 가지 검색어가 필요하지 않습니다. JOIN sql 절을 사용하면 하나의 쿼리 – Steve

답변

4

List<int>을 만들고 값을 추가하십시오.

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

다음과 같은 것을 사용해야합니다. 'string query_select_course_name = "SELECT course_title FROM courses course_id IN ('"+ string.Join (" ','", course) + " ')", –

+0

감사합니다. 이것은 내가 많이 도움이 .. –

1

, 당신의 course_id마지막 행의 셀 값이됩니다.

나는 당신이 List<int>를 작성하고 while 문 내부에 그 course_id를 추가, 1, 2, 3 같은 그 값을 쉼표로 구분 문자열로 생성 string.Join를 사용하여 같은 쿼리에서 내부 대신 =IN 절을 사용하는 것이 좋습니다;

course_id IN (1, 2, 3) 
+0

ok를 사용하여 작업 할 수 있습니다. 나 해보자. –

+0

하지만 gridview에서 모든 값을 표시하는 방법보다? –