我正在处理的一些表具有空值,并且抛出错误。到目前为止,我尝试了一些解决方案来处理空值,但都没有成功。
以下是我到目前为止所做工作的代码示例;
If (r("datemodified").Equals(DBNull.Value)) Then
datemodified = String.Empty
Else
datemodified = (r("datemodified"))
End If和;
If r.HasRows Then
datemodified = (r("datemodified"))
Else
datemodified = String.Empty
End If和;
If r("datemodified") = Nothing Then
datemodified = String.Empty
Else
datemodified = (r("datemodified"))
End If和;
If r.IsDBNull("datemodified") Then
datemodified = String.Empty
Else
datemodified = (r("datemodified"))并通过sql实现;
Select isnull(datemodified, '')最终结果是一个IndexOutOfRangeException。
下面是sql语句;
select datemodified, maintainedby, email, hitcount from grouping where id = @footid另外,我已经运行了查询,并且运行正常(即所有的cols都存在)
发布于 2010-02-09 18:33:10
要处理代码中的空值,可以使用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, '')发布于 2010-02-09 18:49:11
因为您尝试访问的列在结果集中不存在,所以IndexOutofRangeException是错误的。
通过SqlDataReader访问序数或列时,必须指定列索引或列名。在您的场景中,您需要为返回的SQL列指定一个别名。
SELECT ISNULL(datemodified, '') AS [datemodified]https://stackoverflow.com/questions/2228292
复制相似问题