2014-01-20 65 views
1

我對使用vb.net和SQL有點新,所以我想我會檢查你們,看看我做的事情是否合理,或者如果有更好的方法。對於第一步,我需要讀取幾個表中的所有行,並以代碼需要查看的方式存儲數據。首先,我得到一個計數:Vb.net逐行拉入SQL表

mysqlCommand = New SQLCommand("SELECT COUNT(*) From TableName") 
Try 
    SQLConnection.Open() 
    count = myCommand.ExecuteScalar() 
Catch ex As SqlException 

Finally 
    SQLConnection.Close() 
End Try 

Next 

現在我只想通過行迭代,但我有一個困難時期有兩個部分,首先,我想不通,將噴我搶一個特定的SELECT語句桌子的一排。我在這裏看到了這個例子,How to select the nth row in a SQL database table?。但是,這只是如何在SQL中完成的,但我不確定這會轉換成vb.net調用。

其次,在上面的mycommand.ExecuteScalar()告訴VB我們期望從這個數字回來。我相信select語句會返回一個DataRow,但我不知道哪個Execute()語句會告訴腳本期望這個。

預先感謝您。

+0

有一個更好的方法。從數據庫中選擇數據並遍歷DataTable。 –

+0

爲什麼要計數?如果表格在請求之間發生變化,那麼它很可能是錯誤的。史密爾特先生給了你一條路。另一個將使用SqlDataReader,另一個是ORM。如果不知道你在處理數據,很難多說。 –

回答

1

一個簡單的方法是使用您逐行迭代的DataTable。您可以使用DataAdapter來填充它。使用Using語句來處置/近處的物體實現IDisposable像連接屬性:

Dim table = New DataTable 
Using sqlConnection = New SqlConnection("ConnectionString") 
    Using da = New SqlDataAdapter("SELECT Column1, Column2, ColumnX FROM TableName ORDER By Column1", sqlConnection) 
     ' you dont need to open/close the connection with a DataAdapter ' 
     da.Fill(table) 
    End Using 
End Using 

現在你可以遍歷所有行與一個循環:

For Each row As DataRow In table.Rows 
    Dim col1 As Int32 = row.Field(Of Int32)(0) 
    Dim col2 As String = row.Field(Of String)("Column1") 
    ' ...' 
Next 

或使用該表作爲DataSource了數據綁定控制。