-1

表名称 - 桌面

列 - 主机名

我试过这种方式但没有工作

Dim adapter As New MyAdapter()
Dim table As New MyTable()

adapter.Fill(table, param1, param2)

If table.Rows.Count > 0 Then
    Dim s As String = table.Rows(1)("mycolumn1").ToString()
End If
4

2 回答 2

3

.NET 中的所有集合都以索引 0 而不是 1 开头。所以即使只有一行也可以:

If table.Rows.Count > 0 Then
   Dim s As String = table.Rows(0)("HostName").ToString()
End If

请注意,最好使用 typedField方法:

Dim hostName = table.Rows(0).Field(Of String)("HostName")

既然你提到loop了,你可以使用 For Each

For Each row As DataRow In table.Rows
    Dim hostName = row.Field(Of String)("HostName")
Next

或使用 LINQ:

Dim allHostNames = From row in table
                   Select row.Field(Of String)("HostName")
Dim hostNamesCommaSeparated = String.Join(",", allHostNames)

除此之外,由于您使用的是强类型DateTableand TableAdapter,您还应该能够直接访问自动生成的列:

Dim hostName As String = table.Rows(0).HostName
于 2013-10-18T14:02:42.223 回答
1

如何使用 SQL Server 和 VB.net 循环列的行值?

你正在寻找一个For Each循环

For Each row As DataRow In table.Rows
    Dim s As String = row("mycolumn1").ToString()
    '' rest of your code
Next row
于 2013-10-18T14:03:52.890 回答