Asp.net 如何避免IndexOutOfRangeException索引DataReader列?

Asp.net 如何避免IndexOutOfRangeException索引DataReader列?,asp.net,sql,vb.net,ado.net,Asp.net,Sql,Vb.net,Ado.net,我遇到了一个“IndexOutOfRangeException”的小麻烦。我认为这是因为当代码试图从数据库中获取DateModified列时,它有时包含空值(用户创建页面后并不总是更新页面) 这是我的密码 s = ("select datemodified, maintainedby, email, hitcount from updates where id = @footid") Dim x As New SqlCommand(s, c) x.Parameters.Add("@footi

我遇到了一个“IndexOutOfRangeException”的小麻烦。我认为这是因为当代码试图从数据库中获取DateModified列时,它有时包含空值(用户创建页面后并不总是更新页面)

这是我的密码

s = ("select datemodified, maintainedby, email, hitcount from updates where id =   @footid")
Dim x As New SqlCommand(s, c)
x.Parameters.Add("@footid", SqlDbType.Int)
x.Parameters("@footid").Value = footid
c.Open()
Dim r As SqlDataReader = x.ExecuteReader
While r.Read
    If r.HasRows Then
        datemodified = (r("DateModified"))
        maintainedby = (r("maintainedby"))
        email = (r("email"))
        hitcount = (r("hitcount"))
    End If
End While
c.Close()
我认为(在一点msdn之后)添加

If r.HasRows Then 

End If 
可以解决这个问题,但到目前为止,在添加之后,我仍然得到了相同的旧IndexOutOfRangeException

(顺便说一句,我已经尝试将datemodified改为string/datetime)

是否会更改

datemodified = (r("DateModified")) 

工作?

不需要改变

datemodified = (r("DateModified")) 


工作?

我试图通过传入空值和空集来重新创建您的问题。我无法在您提供的代码示例中重新创建它。你介意发布更多的代码吗,甚至是整个页面?是否有发生错误的行号?我想进一步挖掘。

我试图通过传递空值和空集来重新创建您的问题。我无法在您提供的代码示例中重新创建它。你介意发布更多的代码吗,甚至是整个页面?是否有发生错误的行号?我想进一步深入。

试试。

试试。

检查列是否为空如何?我已经试过了;如果r.Item(“DateModified”)不是DBNull.Value,那么DateModified=(r(“DateModified”))否则DateModified=String.Empty End如果(但似乎不起作用)检查列是否为null如何?我已经尝试过了;如果r.Item(“DateModified”)不是DBNull.Value,那么DateModified=(r(“DateModified”))Else DateModified=String.Empty End如果(但似乎不起作用)感谢帮助,不,我确实将其作为DateModified,然后我更改为DateModified以尝试解决问题。感谢帮助,不,我把它改成datemodified,然后我改成datemodified,试图解决这个问题。