2016-06-11 33 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

値を取得するために2つのクエリは必要ありません。 JOINのsql節では、1つのクエリ – Steve

答えて

4

List<int>を作成し、値を追加します。

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

あなたは、文字列query_select_course_nameは= "( '+ string.Join( " '"、もちろん)+ "')" IN Course_IDにコースFROM COURSE_TITLEをSELECT"''だけでなく、このようなものを使用する必要があります。これは私に多くを助けた.. –

+0

はありがとうございました。 –

1

あなたがリーダーを繰り返すので、あなたのcourse_id最後行のセル値になります。

私はあなたがList<int>を作成するなど、あなたのクエリで内部の代わりに=IN句を使用し、1, 2, 3のようなそれらの値とカンマ区切り文字列を生成するstring.Joinを使用して、あなたのwhileの文の中にあるものをcourse_idを追加することをお勧め。

course_id IN (1, 2, 3) 
+0

okで作業を行うことができます。私が試してみましょう。 –

+0

しかし、gridviewのすべての値をどのように表示するのですか? ' –

関連する問題