2016-09-24 78 views
0

标题暗示我试图将查询存储到二维数组中。我一定是做错了,因为它似乎只是将数组中的最后一行存储在(0,0)到(0,5)列中(我猜这就是第一列哈哈)将SQL查询存储到多维数组中

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

这是我目前有:

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() 
+2

如果你声明并初始化为0变量我在每个循环你还希望在这里发生什么?在循环外移动声明和初始化。顺便说一句,你知道DataTable只是一个荣耀阵列,有很多额外的小工具可以处理数据吗? – Steve

+0

god f'ing dammit LOL –

+0

@Steve如果你发布回答生病给你应有的信用 –

回答

1

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

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 
+0

这可能证明是更简单一些。谢谢 –