日期:2014-05-17  浏览次数:20934 次

读取数据库中的DateTime报错?
数据库中的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 之间。


这是什么原因?

------解决方案--------------------
你的查询语句有问题吧,你查询参数里是不是有DATETIME类型
把DATETIME 类型更改为 DATETIME?(加个问号) 就可以接受NULL值了
------解决方案--------------------
if(cmd.ExecuteScalar() == DBNull.Value 
------解决方案--------------------
 cmd.ExecuteScalar() == null)
我估计不是这句代码本身的问题,而是ExecuteScalar方法执行时抛出的异常,你可能用这个方法去执行了增删改了。
------解决方案--------------------
疑where条件中传入的时间超数据库所能识别范围,先把时间换成1753-1-1到9999-12-31之间看是否报错,最好将sql贴出来
------解决方案--------------------
cmd.ExecuteScalar()你执行了两次,

应该改为:

Object res=cmd.ExecuteScalar();

if (res==null
------解决方案--------------------
res is DBNull)
{
....
}

不过你还要把你的sql语句贴出来,才能看到原因,
------解决方案--------------------
调试
------解决方案--------------------
if(cmd.ExecuteScalar() == DBNull.Value 
------解决方案--------------------
 cmd.ExecuteScalar() == null)

这句改成成样

object ob=cmd..ExecuteScalar() 
if (ob == null)
{
}
这样来处理
------解决方案--------------------
引用:
if(cmd.ExecuteScalar() == DBNull.Value 
------解决方案--------------------
 cmd.ExecuteScalar() == null)

这句改成成样

object ob=cmd..ExecuteScalar() 
if (ob == null)
{
}
这样来处理


顶这个。
------解决方案--------------------
引用:
if(cmd.ExecuteScalar() == DBNull.Value 
------解决方案--------------------
 cmd.ExecuteScalar() == null)

这句改成成样

object ob=cmd..ExecuteScalar() 
if (ob == null)
{
}
这样来处理


再顶,,,