SQLDataReader:处理空值

Phi*_*hil 4 vb.net asp.net syntax null sqldatareader

我正在处理的一些表具有空值并且抛出错误.到目前为止,我已经尝试了一些解决方案来处理空值但没有成功.

以下是我迄今为止努力的代码示例;

If (r("datemodified").Equals(DBNull.Value)) Then
                datemodified = String.Empty
            Else
                datemodified = (r("datemodified"))
            End If
Run Code Online (Sandbox Code Playgroud)

和;

If r.HasRows Then
                datemodified = (r("datemodified"))
            Else
                datemodified = String.Empty
            End If
Run Code Online (Sandbox Code Playgroud)

和;

 If r("datemodified") = Nothing Then
                datemodified = String.Empty
            Else
                datemodified = (r("datemodified"))
            End If
Run Code Online (Sandbox Code Playgroud)

和;

If r.IsDBNull("datemodified") Then
                datemodified = String.Empty
            Else
                datemodified = (r("datemodified"))
Run Code Online (Sandbox Code Playgroud)

并通过sql;

Select isnull(datemodified, '')
Run Code Online (Sandbox Code Playgroud)

最终结果是IndexOutOfRangeException.

这是sql;

select datemodified, maintainedby, email, hitcount from grouping where id = @footid
Run Code Online (Sandbox Code Playgroud)

ps,我运行了查询,它工作正常(即所有cols都存在)

Guf*_*ffa 5

要处理代码中的null值,可以使用IsDBNull方法:

Dim index As Integer = r.GetOrdinal("datemodified")
If r.IsDBNull(index) Then
   datemodified = String.Empty
Else
   datemodified = r(index)
End If
Run Code Online (Sandbox Code Playgroud)

要处理SQL中的空值,您必须为该字段指定一个名称,以便能够在数据读取器中按名称访问它:

select datemodified = isnull(datemodified, '')
Run Code Online (Sandbox Code Playgroud)