Asp.net SQLDataReader查找每行的值
我曾经使用数据集而不是sqldatareaders,并且我曾经能够做类似的事情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是否有任何行,但我想知道是否有方法获取每行的值 我猜这是可能
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。这非常好,示例代码非常有用。查看此链接:或此链接: