C# 我应该在查询中检查null还是dbnull

C# 我应该在查询中检查null还是dbnull,c#,sql-server-2008,C#,Sql Server 2008,我有一个查询,它使用count检查特定类型的记录有多少 这里,我的查询是否可能返回null或DBNull?我应该检查它们吗?我不这么认为:它可以返回零或更大,因为您正在计数 NULL将是一个错误的结果,因为没有结果是零结果 否,它将始终返回大于或等于0的数字 如果您使用的是ExecuteScalar,我认为调用将检索null而不是DbNull对象 为了始终接收值,我通常会封装我的请求: 选择ISNULLSELECT COUNTdate FROM abc,其中日期=某个值,0 Serge您应该检查

我有一个查询,它使用count检查特定类型的记录有多少


这里,我的查询是否可能返回null或DBNull?我应该检查它们吗?

我不这么认为:它可以返回零或更大,因为您正在计数


NULL将是一个错误的结果,因为没有结果是零结果

否,它将始终返回大于或等于0的数字

如果您使用的是ExecuteScalar,我认为调用将检索null而不是DbNull对象

为了始终接收值,我通常会封装我的请求: 选择ISNULLSELECT COUNTdate FROM abc,其中日期=某个值,0

Serge

您应该检查DbNull,因为它是面向数据库的

看这个

我就是这么做的:

if (rdr.HasRows)
        {
          rdr.Read();
          if (rdr["MyField"] != DBNull.Value)
                {
                   bla bla....
                }
因此,检查DBNull是否为yes。

只要尝试一下:

SELECT COUNT(*) WHERE 1=2
--Returns 0
Per:

COUNT始终返回int数据类型值


一位智者曾经说过,一个实验抵得上一千个专家的意见。试试看,其中日期=你知道的某个值不存在。我不知道在什么情况下,你在计数时会得到null。count*总是>=0,从不为DBNull或null。此查询将始终返回一行!
SELECT COUNT(*) WHERE 1=2
--Returns 0