C#测验使用Access数据库问题

时间:2011-06-29 11:24:32

标签: c# database ms-access

我正在尝试使用Access数据库为我的C#程序创建一个测验来保存问题和答案。 在数据库表中,问题在一列中,答案在另一列中。从本质上讲,这就是我想要发生的事情:

表单加载,当发生这种情况时,从数据库中随机选择的问题将出现在该表单上。问题本身将使用标签显示。

这是我的代码:

private void WindowsAnalysisQuiz_Load(object sender, EventArgs e)
    {
        //declare connection string using windows security
        string cnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Hannah\\Desktop\\\\WindowsAnalysisQuiz.accdb";

        //declare Connection, command and other related objects
        OleDbConnection conGet = new OleDbConnection(cnString);
        OleDbCommand cmdGet = new OleDbCommand();

        try
        {
            //open connection
            conGet.Open();

            cmdGet.CommandType = CommandType.Text;
            cmdGet.Connection = conGet;
            cmdGet.CommandText = "SELECT Question FROM WindowsAnalysisQuiz ORDER BY rand()";

            label1.Text = cmdGet.CommandText["Question"];

            conGet.Close();

        }
        catch (Exception ex)
        {
            //display generic error message back to user
            MessageBox.Show(ex.Message);
        }
        finally
        {
            //check if connection is still open then attempt to close it
            if (conGet.State == ConnectionState.Open)
            {
                conGet.Close();
            }
        }

    }

   }   

我正在尝试分配一个随机问题以显示在我的标签中。 顺便说一句,这种使用数据库存储问题和答案的方法是否可行?

由于

2 个答案:

答案 0 :(得分:0)

你的意思是rnd(),而不是rand()。

但我不确定这是否可以通过oledb驱动程序。

答案 1 :(得分:0)

一种解决方案是在问题表中包含自动编号字段。然后,您可以在代码中生成随机值,然后根据随机选择的ID号进行查询。例如,如果您的问题编号为1到100,则您将生成的随机数的范围限制在该范围内。