2017-03-02 105 views
0

我正在從表ProductItems中檢索名爲"Product Name"的列的值。使用For[...]Loop,我得到每一行的列值。如何將從數據庫檢索到的所有值存儲到字符串變量或數組中

在第一個循環中,s1的值爲。在第二個循環中,s1的值是鉛筆只有並且它繼續。在最後一個循環中,存儲在s1中的值是水彩只有

我希望所有這些ProductName的值存儲在字符串s1中。我嘗試使用String.Join方法並將值存儲在字符串數組中,但它不起作用。

這是我的代碼:

Dim s1 As String = Nothing 
Dim s2() As String = Nothing 
Dim index As Integer 

myConnection.Open() 
table = New DataTable 
str = "SELECT * FROM ProductItems" 
cmd = New OleDbCommand(str, myConnection) 
adapter = New OleDbDataAdapter(cmd) 
adapter.Fill(table) 
For index = 0 To table.Rows.Count - 1 
    s1 = table.Rows(index)("Product Name").ToString 
Next 
myConnection.Close() 
+0

你想如何把所有的字符串存儲在單個字符串中?逗號分隔?或者你更喜歡數組? – Enigmativity

+0

所以你問的是如何將兩個「串」連接在一起。我不相信你以前從來沒有這樣做過,或者在沒有的情況下,你可以通過簡單的網絡搜索找到如何去做。 – jmcilhinney

+0

我想用Blankspace(「」)作爲分隔符存儲字符串。我更喜歡數組來存儲值。 @Enigmativity –

回答

0

這是從你的問題不清楚你期望的結果是什麼,但你可以嘗試這樣的事情作爲開始:

Imports System.Data.OleDb 

Module Main 
    Sub Main() 
    Dim oProducts As List(Of String) 
    Dim aProducts As String() 
    Dim sSqlQuery As String 
    Dim oTable As DataTable 

    sSqlQuery = "SELECT * FROM ProductItems" 
    oTable = New DataTable 

    Using oConnection As New OleDbConnection 
     Using oCommand As New OleDbCommand(sSqlQuery, oConnection) 
     Using oAdapter As New OleDbDataAdapter(oCommand) 
      oConnection.Open() 
      oAdapter.Fill(oTable) 
     End Using 
     End Using 
    End Using 

    oProducts = New List(Of String) 

    For iIndex As Integer = 0 To oTable.Rows.Count - 1 
     oProducts.Add(oTable.Rows(iIndex)("Product Name")) 
    Next 

    aProducts = oProducts.ToArray 
    End Sub 
End Module 

aProducts現在是一個包含表中所有產品名稱的數組。

+0

與問題無關 - 但您能否回答使用變量名稱中的前綴「o」帶來的好處。我們的團隊是其中一個使用相同的人,我試圖爲他們解釋爲什麼他們不應該這樣做? – Fabio

+0

它的工作原理。我希望將這些值與用戶輸入進行比較,並根據數量計算產品的價格。非常感謝。 @InteXX –

+0

@Fabio - 它被稱爲[匈牙利語](https://en.wikipedia.org/wiki/Hungarian_notation)。在這種情況下,前綴表示變量的數據類型。就我個人而言,我主要使用約定來描述私有(in-method)變量和類字段之間的區別。例如,「顧客」與「顧客」不同。 HTH – InteXX

相關問題