日期:2014-05-16  浏览次数:20891 次

c#+sqlserver考试系统 随机抽题 翻页代码

上一题 和下一题的代码怎么写啊?

private void Test_Load(object sender, EventArgs e)
        {
            SqlConnection cn = new SqlConnection();
            cn.ConnectionString = "data source=.;initial catalog=TestOnLine;integrated security=true;";
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = cn;
            cmd.CommandText = "select top 20 * from Exercise order by newid()";
            cn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
                txtExercise.Text = " "+dr.GetString(1) +"\n" +
                    "\n" + "  A." + dr.GetString(2) +
                    "\n" + "  B." + dr.GetString(3) +
                    "\n" + "  C." + dr.GetString(4) +
                    "\n" + "  D." + dr.GetString(5);
            dr.Close();
            cn.Close();
        }

------解决方案--------------------
你可以循环把题目装入一个数组的成员变量。

以及用一个int值表示当前的题目。

private string[] questions = new string[20];
private int currentquestion = 0;

i = 0;
while (dr.Read())
{

    questions[i] = " "+dr.GetString(1) +"\n" +
                    "\n" + "  A." + dr.GetString(2) +
                    "\n" + "  B." + dr.GetString(3) +
                    "\n" + "  C." + dr.GetString(4) +
                    "\n" + "  D." + dr.GetString(5);
    i++;
}

那么上一题下一题就是改变currentquestion,然后从数组取出对应的题目。
------解决方案--------------------
20道题随机抽出后,放入集合列表中,根据当前显示题目的id,从集合中找出下一题,然后展示