数据库中的DateTime列值为null,用SqlCommand.ExecuteScalar()检索时间的时候,下面的代码报错呢?if(cmd.ExecuteScalar() == DBNull.Value || cmd.ExecuteScalar() == null)报错:SqlDateTime 溢出,必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。
这是什么原因?

解决方案 »

  1.   

    你的查询语句有问题吧,你查询参数里是不是有DATETIME类型
    把DATETIME 类型更改为 DATETIME?(加个问号) 就可以接受NULL值了
      

  2.   

    if(cmd.ExecuteScalar() == DBNull.Value || cmd.ExecuteScalar() == null)
    我估计不是这句代码本身的问题,而是ExecuteScalar方法执行时抛出的异常,你可能用这个方法去执行了增删改了。
      

  3.   

    疑where条件中传入的时间超数据库所能识别范围,先把时间换成1753-1-1到9999-12-31之间看是否报错,最好将sql贴出来
      

  4.   

    cmd.ExecuteScalar()你执行了两次,应该改为:Object res=cmd.ExecuteScalar();if (res==null||res is DBNull)
    {
    ....
    }不过你还要把你的sql语句贴出来,才能看到原因,
      

  5.   

    if(cmd.ExecuteScalar() == DBNull.Value || cmd.ExecuteScalar() == null)这句改成成样object ob=cmd..ExecuteScalar() 
    if (ob == null)
    {
    }
    这样来处理