ID番号(1、2..20など)に基づいてSQLに格納されている1〜35の質問の範囲から25の乱数を取得しています。これは、テストを受けるユーザーにSQLの質問プールからランダムな質問が与えられるようにするためです。ループ内でSQLパラメーターをインクリメントしようとしています。変数「a」は、尊重される配列に値を入力するためのキーとして使用されています。
サンプルコードは以下のとおりです
protected void Question_Fetch(int[] Mixed_Questions)
//this array is loaded with my mixed numbers between 1-35(no duplicates) the array length //is 25
{
Question_String_list = new string[25];
Question_Answers = new string[25];
Num_Answers = new string[25];
Types_Of_Question = new string[25];
User_Answers = new string[25];
isLocked = new string[25];
using (SqlCommand Comd = new SqlCommand("SELECT Question_String, Question_Answer, Type_Of_Question, Possible_Answers FROM Question_Pool WHERE Question_ID = @Question_ID", Conn))
{
SqlParameter IDParam = Comd.Parameters.Add("@Question_ID", SqlDbType.Int);
for (int a = 0; a < Mixed_Questions.Length; a++)
{
int Random_Number = Mixed_Questions[a];
Comd.Parameters.AddWithValue("@Question_ID", Random_Number);
Conn.Open();
SqlDataReader rdr = Comd.ExecuteReader();
if (rdr.Read())
{
IDParam = Mixed_Questions[a];
//Random_Number = Mixed_Questions[a];
//Comd.Parameters.AddWithValue("@Question_ID", Random_Number);
Question_String_list[a] = rdr.GetValue(0).ToString();
Question_Answers[a] = rdr.GetValue(1).ToString();
Types_Of_Question[a] = rdr.GetValue(2).ToString();
Num_Answers[a] = rdr.GetValue(3).ToString();
Conn.Close();
}
}
}
Answer_Controls();
Init_Test_Details();
}