首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLDataReader:处理空值

SQLDataReader:处理空值
EN

Stack Overflow用户
提问于 2010-02-09 18:25:37
回答 2查看 6.1K关注 0票数 4

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

以下是我到目前为止所做工作的代码示例;

代码语言:javascript
复制
If (r("datemodified").Equals(DBNull.Value)) Then
                datemodified = String.Empty
            Else
                datemodified = (r("datemodified"))
            End If

和;

代码语言:javascript
复制
If r.HasRows Then
                datemodified = (r("datemodified"))
            Else
                datemodified = String.Empty
            End If

和;

代码语言:javascript
复制
 If r("datemodified") = Nothing Then
                datemodified = String.Empty
            Else
                datemodified = (r("datemodified"))
            End If

和;

代码语言:javascript
复制
If r.IsDBNull("datemodified") Then
                datemodified = String.Empty
            Else
                datemodified = (r("datemodified"))

并通过sql实现;

代码语言:javascript
复制
Select isnull(datemodified, '')

最终结果是一个IndexOutOfRangeException。

下面是sql语句;

代码语言:javascript
复制
select datemodified, maintainedby, email, hitcount from grouping where id = @footid

另外,我已经运行了查询,并且运行正常(即所有的cols都存在)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-09 18:33:10

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

代码语言:javascript
复制
Dim index As Integer = r.GetOrdinal("datemodified")
If r.IsDBNull(index) Then
   datemodified = String.Empty
Else
   datemodified = r(index)
End If

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

代码语言:javascript
复制
select datemodified = isnull(datemodified, '')
票数 5
EN

Stack Overflow用户

发布于 2010-02-09 18:49:11

因为您尝试访问的列在结果集中不存在,所以IndexOutofRangeException是错误的。

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

代码语言:javascript
复制
SELECT ISNULL(datemodified, '') AS [datemodified]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2228292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档