2016-09-24 73 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

這可能證明是更簡單一些。謝謝 –