Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net SQLDataReader:处理空值_Asp.net_Vb.net_Syntax_Null_Sqldatareader - Fatal编程技术网

Asp.net SQLDataReader:处理空值

Asp.net SQLDataReader:处理空值,asp.net,vb.net,syntax,null,sqldatareader,Asp.net,Vb.net,Syntax,Null,Sqldatareader,我正在处理的一些表有空值,并且抛出错误。到目前为止,我尝试了一些解决办法来处理空值问题,但没有成功 以下是我迄今为止所做工作的代码示例 If (r("datemodified").Equals(DBNull.Value)) Then datemodified = String.Empty Else datemodified = (r("datemodified")) End If 及

我正在处理的一些表有空值,并且抛出错误。到目前为止,我尝试了一些解决办法来处理空值问题,但没有成功

以下是我迄今为止所做工作的代码示例

If (r("datemodified").Equals(DBNull.Value)) Then
                datemodified = String.Empty
            Else
                datemodified = (r("datemodified"))
            End If

并通过sql

Select isnull(datemodified, '')
最终结果是一个IndexOutOfRangeException

这里是sql

select datemodified, maintainedby, email, hitcount from grouping where id = @footid

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

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

Dim index As Integer = r.GetOrdinal("datemodified")
If r.IsDBNull(index) Then
   datemodified = String.Empty
Else
   datemodified = r(index)
End If

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

select datemodified = isnull(datemodified, '')

IndexOutofRangeException是因为您试图访问的列在结果集中不存在

当您通过SqlDataReader访问序号或列时,必须指定列索引或列名。在您的场景中,需要为返回的SQL列指定别名

SELECT ISNULL(datemodified, '') AS [datemodified]

datemodified(如果我将该行注释掉,那么它会立即在下一行抛出另一行,该行由维护)空值的原因是当人们更新页面时,他们并不总是填写详细信息。就我个人而言,我不允许使用空值,但db是传统的。您可以将您正在使用的SQL添加到您的问题中吗?我询问了您的SQL,因为正如Kosala所指出的,如果您不别名列,您将获得IndexOutOfRange异常。感谢您的帮助。在尝试了这两种方法后,问题仍然存在。然后问题就出现在其他地方。。。在尝试从数据读取器获取数据之前是否调用Read?检查r.FieldCount的值以查看结果中是否有任何列,检查r.GetOrdinal(“datemodified”)的值以查看该字段是否为其中一列。感谢您的帮助。经过编辑我有;从id=@footid的分组中选择ISNULL(datemodified“”)作为datemodified、MaintenedBy、email、hitcount。不幸的是,例外情况仍在发生。
Dim index As Integer = r.GetOrdinal("datemodified")
If r.IsDBNull(index) Then
   datemodified = String.Empty
Else
   datemodified = r(index)
End If
select datemodified = isnull(datemodified, '')
SELECT ISNULL(datemodified, '') AS [datemodified]