C# 我应该在查询中检查null还是dbnull
我有一个查询,它使用count检查特定类型的记录有多少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您应该检查
这里,我的查询是否可能返回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