0

我将尽我所能解释这一点,尽管我承认我几个月来没有做太多尝试,所以我不仅生疏,而且不适合相处。

我正在使用可视化 Web 开发人员和 asp,vb 是带有 sql db 的代码。

如果我从表中选择一列,例如:

sqlCmd.CommandText = "SELECT Username, W1, W2, W3, W4 FROM tablename"

假设此表中有多行,这些列中有数据。

当我做一个数据阅读器,或者我是如何被展示的时候,我声明 dr 像:

Dim dr As Data.SqlClient.SqlDataReader

我可以使用选定的项目,例如:

dr.item(0)
dr.item(1)

等等

但我可以使用的唯一项目是选择的第一行项目。如何选择表中的所有行。或者我如何使用 dr.item 处理来自多行的数据,或者以某种方式告诉它移动到下一行,以便 dr.item(0) 成为表中第二行的用户名。

我希望这是有道理的,如果这是一个愚蠢的问题,我很抱歉。我很感谢您提前花时间和帮助。多谢你们。

4

2 回答 2

4

SqlDataReader.Read将阅读器推进到下一条记录,并true在至少有另一行时返回:

Using conn = New SqlClient.SqlConnection(connString)
    Using cmd = New SqlClient.SqlCommand("SELECT Username, W1, W2, W3, W4 FROM tablename", conn)
        conn.Open()
        Using dr = cmd.ExecuteReader()
            While dr.Read()
                Dim UserName As String = dr.GetString(0)
                ' ... '
            End While
        End Using
    End Using        
End Using

用于Using尽快处置任何实施IDisposable。它还将隐式关闭连接。

编辑:使用DataTable

如何选择表格中的所有行

上面的DataReader方法效果很好,但是如果你想选择所有行并且可以全部加载到内存中,你可以使用 aDataTable代替。然后您还可以通过索引器访问每一行,如数组或列表:

Dim tblUsers = New DataTable()
Using conn = New SqlClient.SqlConnection(connString)
    Using da = New SqlClient.SqlDataAdapter("SELECT Username, W1, W2, W3, W4 FROM tablename", conn)
        da.Fill(tblUsers)
    End Using
End Using
' access a row via index: '
Dim row10 As DataRow = tblUsers.Rows(9)
Dim user10 = row10.Field(Of String)("Username")
' of course you can also iterate all rows: '
For Each row As DataRow In tblUsers.Rows
    Dim userName = row.Field(Of String)("Username")
Next
于 2012-09-01T22:44:19.930 回答
1

要遍历数据表的行,您需要使用以下方法:

while dr.read()
 Dim col1=dr.item(0)
 Dim col2=dr.item(1)
End while

这样您就可以拥有所有行的每个属性。

于 2012-09-01T22:53:37.397 回答