我正在尝试使用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();
}
}
}
}
我正在尝试分配一个随机问题以显示在我的标签中。 顺便说一句,这种使用数据库存储问题和答案的方法是否可行?
由于
答案 0 :(得分:0)
你的意思是rnd(),而不是rand()。
但我不确定这是否可以通过oledb驱动程序。
答案 1 :(得分:0)
一种解决方案是在问题表中包含自动编号字段。然后,您可以在代码中生成随机值,然后根据随机选择的ID号进行查询。例如,如果您的问题编号为1到100,则您将生成的随机数的范围限制在该范围内。