Asp.net SQLDataReader查找每行的值

Asp.net SQLDataReader查找每行的值,asp.net,sqldatareader,Asp.net,Sqldatareader,我曾经使用数据集而不是sqldatareaders,并且我曾经能够做类似的事情 If dataset.tables(0).Rows(0)(1).ToString()) = "N" Then lbl.Text = dataset.tables(0).Rows(0)(2).ToString()) Else 'Do Nothing End If 这显然不适用于sqldatareaders 我有代码查看SQLDatareader是否有任何行,但我想知道是否有方法获取每行的值 我猜这是可能

我曾经使用数据集而不是sqldatareaders,并且我曾经能够做类似的事情

If dataset.tables(0).Rows(0)(1).ToString()) = "N" Then
   lbl.Text = dataset.tables(0).Rows(0)(2).ToString()) 
Else
   'Do Nothing
End If
这显然不适用于sqldatareaders

我有代码查看SQLDatareader是否有任何行,但我想知道是否有方法获取每行的值

我猜这是可能的,我已经四处看了看,但似乎什么也找不到

Dim conn As SqlConnection = New SqlConnection("server='h'; user id='w'; password='w'; database='w'; pooling='false'")  

conn.Open()  

Dim query As New SqlCommand("DECLARE @investor varchar(10), @sql varchar(1000) Select @investor = 69836 select @sql = 'SELECT * FROM OPENQUERY(db,''SELECT * FROM table WHERE investor = ''''' + @investor + ''''''')' EXEC(@sql)", conn) 

Dim oDR As SqlDataReader = query.ExecuteReader()

If oDR.HasRows or dataset.tables(0).Rows(0)(1).ToString()) = "N" Then
   lbl.Text = dataset.tables(0).Rows(0)(2).ToString())
Else
   'Do Nothing
End If
这是我目前的代码,显然不起作用

有什么想法吗


谢谢

当您使用数据读取器时,您必须自己一步一步地浏览每一行。使用HasRows是一个良好的开端,因为它将告诉您返回的结果集是否为空

要遍历结果集,应该使用Read方法。如果您在某一行,则返回true;如果您移动到最后一行,则返回false

我的Vb很差,因此我将用C语言为您提供一个示例:

if (oDR.HasRows && oDR.Read()) 
{
  if (oDR.GetString(0) == "N")
  {
    lbl.Text = oDr.GetString(1);
  }  
}
在这里,我首先检查是否有一个包含数据的结果集,然后尝试移动到第一行。如果成功,则读取第一列的字符串值并将其与N进行比较。如果值等于N,则将lbl变量的文本属性设置为第二列的字符串值

这应该与数据集的算法相同。我建议您阅读MSDN。这非常好,示例代码非常有用。

查看此链接:或此链接: