这个数据读取器的空检查有什么问题

时间:2010-04-14 10:13:57

标签: asp.net vb.net syntax null sqldatareader

            c.Open()
            r = x.ExecuteReader
            If Not r("filename").IsDbnull Then
                imagepath = "<img src='images/'" & getimage(r("filename")) & " border='0' align='absmiddle'"

            End If
            c.Close()
            r.Close()

我也试过了;

If r("filename") Is DBNull.Value Then
            imagepath = String.Empty
        Else
            imagepath = "<img src='images/'" & getimage(r("filename")) & " border='0' align='absmiddle'"
        End If
        c.Close()
        r.Close()

错误是:没有数据时读取无效。

我的代码的想法是仅在数据可用时才构建img src字符串。

非常感谢。

由于

3 个答案:

答案 0 :(得分:2)

在数据可供阅读之前,您需要在SqlDataReader上调用Read方法。

r = x.ExecuteReader
r.Read()

答案 1 :(得分:0)

首先需要调用Read方法。

If r.Read() AndAlso Not r("filename").IsDbnull Then ...

答案 2 :(得分:0)

如果在运行查询后DataReader中有0行,则根本就没有字段,因此您无法将它们与null进行比较。

您可以使用if r.HasRows then //got data ...

进行检查