通过 Access 数据库随机化 RadioButtons 中的答案

Randomize answers in RadioButtons through Access database

我目前正在做多项选择题测验,这部分遇到了问题。我正在尝试从数据库中获取答案并将它们随机放入单选按钮中。到目前为止,我已经将它们中的每一个都放入了单选按钮中,但由于我是新手,所以我不确定如何随机化它。

Private Sub Answers()
    Dim dr As OleDbDataReader
    Dim cm As New OleDbCommand
    Dim cn As New OleDbConnection

    cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=login.accdb"
    cn.Open()

    cm.CommandText = ("SELECT pAns1,pAns2,pAns3,CorrectAns FROM MCQ WHERE QuestionNumber = '" & n & "'")
    cm.Connection = cn
    dr = cm.ExecuteReader
    dr.Read()
    RadioButton1.Text = dr.Item("pAns1")
    RadioButton2.Text = dr.Item("pAns2")
    RadioButton3.Text = dr.Item("pAns3")
    RadioButton4.Text = dr.Item("CorrectAns")
End Sub

您可以这样做:

'A class level variable.
Private ReadOnly rand As New Random

Private Sub Answers()
    Using cn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=login.accdb")
        Using cmd As New OleDbCommand("SELECT pAns1, pAns2, pAns3, CorrectAns FROM MCQ WHERE QuestionNumber = ?", cn)
            cmd.Parameters.AddWithValue("@QuestionNumber", n)
            cn.Open()
            Using r As OleDbDataReader = cmd.ExecuteReader
                Dim arr = {
                        r.GetOrdinal("pAns1"),
                        r.GetOrdinal("pAns2"),
                        r.GetOrdinal("pAns3")
                    }.OrderBy(Function(x) rand.Next).ToArray
                If r.Read Then
                    RadioButton1.Text = r.Item(arr(0)).ToString
                    RadioButton2.Text = r.Item(arr(1)).ToString
                    RadioButton3.Text = r.Item(arr(2)).ToString
                End If
            End Using
        End Using
    End Using
End Sub

请注意:

  • 该片段尊重上述评论。

  • 您应该关闭连接并处理一次性物品。 Using ... End Using 块将为您完成。

  • 对于 randomize 要求,我们获取列序数以创建整数数组和 shuffle 内容.您可能想阅读 post 以了解不同的数组 shuffling 方式。