将 SQL 查询存储到多维数组中

Store SQL Query into MultiDimensional Array

A 标题表明我正在尝试将查询存储到二维数组中。我一定是做错了什么,因为它似乎只将数组的最后一行存储在 (0,0) 到 (0,5) 列中(我猜那只是第一列 lol)

在建议我使用列表之前,我的下一步是随机化数组以在每次调用时输出不同的内容。那部分我已经想通了,但是我一直在读这个数组废话时绊倒了。

这是我目前拥有的:

    provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source ="
    dataFile = "C:\Users\Ashleysaurus\Documents\test.accdb"
    connString = provider & dataFile
    myConnection.ConnectionString = connString
    Dim Str As String
    Dim dr As OleDbDataReader
    Dim myArray(2, 5) As String

    myConnection.Open()
    Str = "SELECT Question, Answer1, Answer2, Answer3, Answer4, CorrectAnswer FROM Critters;"
    Dim cmd As OleDbCommand = New OleDbCommand(Str, myConnection)
    dr = cmd.ExecuteReader

    While dr.Read()
        Dim i As Integer = 0
        myArray(i, 0) = CType(dr("Question"), String)
        myArray(i, 1) = CType(dr("Answer1"), String)
        myArray(i, 2) = CType(dr("Answer2"), String)
        myArray(i, 3) = CType(dr("Answer3"), String)
        myArray(i, 4) = CType(dr("Answer4"), String)
        myArray(i, 5) = CType(dr("CorrectAnswer"), String)
        i = i + 1
    End While

    myConnection.Close()

你有一个简单的错误。变量 i 的声明和初始化应该在循环外

Dim i As Integer = 0
While dr.Read()
  ....

但我更喜欢将数据表与这样的代码一起使用

Dim dt = new DataTable()
dt.Load(cmd.ExecuteReader)

现在您可以或多或少地像二维数组一样使用 DataTable

Dim question as string = dt.Rows(0)(0)

for each row as DataRow in dt.Rows
   Console.WriteLine("Question = " & row(0).ToString())
Next