无法从“object”转换为“System.DateTime?”

时间:2021-12-03 03:38:50
数据库字段为 datetime类型,并允许为空,
  <asp:ObjectDataSource ID="ObjectDataSource1".....>
    <InsertParameters>
      <asp:Parameter Name="birth" ConvertEmptyStringToNull="true"  Type="datetime" />
    </InsertParameters>
</asp:ObjectDataSource>
业务逻辑层调用的函数为 public void Yginfo_Insert(object birth,  ...) 
会出现:无法从“object”转换为“System.DateTime?”的错误.
除非业务逻辑层调用的函数改为:public void Yginfo_Insert(datetime birth,  ...),如果这样我就须输入日期,我想让日期为空,不知如何现实,请高手指教! 

8 个解决方案

#1


public void Yginfo_Insert(object birth,  ...) 

在这个方法体里面记得判断。
if(!string.IsnullOrEmpty(birth))
{
  datetime dt=dateTime.Parse(birth);
}
else
{
  DBnull.value;
}

#2


在ObjectDataSource的Inserting事件中进行:
    protected void ObjectDataSource1_Inserting(object sender, ObjectDataSourceMethodEventArgs e)
    {
        DateTime b=DateTime.Now;
        object ob=(Object)b;
        e.InputParameters["birth"] = ob;
    }

#3


是不是你提供的日期格式有问题。

#4


(DateTime)object
或null

#5


先判断 再转化

#6


public void Yginfo_Insert(datetime? birth,  ...) 

#7


我的业务逻辑层调用的函数中用了TableAdapter即
 public void Yginfo_Insert( string name,object birth, object dzrq, object ht_stime, ....)
    {
       yginfoTableAdapters.YGDAAdapter ygobj = new yginfoTableAdapters.YGDAAdapter();
        ygobj.Insert(  string name,birth, dzrq,ht_stime,...);

    }
我想让即使日期为空也能插入数据成功.
如果用 (DateTime)object也不行

#8


UP 6F

#1


public void Yginfo_Insert(object birth,  ...) 

在这个方法体里面记得判断。
if(!string.IsnullOrEmpty(birth))
{
  datetime dt=dateTime.Parse(birth);
}
else
{
  DBnull.value;
}

#2


在ObjectDataSource的Inserting事件中进行:
    protected void ObjectDataSource1_Inserting(object sender, ObjectDataSourceMethodEventArgs e)
    {
        DateTime b=DateTime.Now;
        object ob=(Object)b;
        e.InputParameters["birth"] = ob;
    }

#3


是不是你提供的日期格式有问题。

#4


(DateTime)object
或null

#5


先判断 再转化

#6


public void Yginfo_Insert(datetime? birth,  ...) 

#7


我的业务逻辑层调用的函数中用了TableAdapter即
 public void Yginfo_Insert( string name,object birth, object dzrq, object ht_stime, ....)
    {
       yginfoTableAdapters.YGDAAdapter ygobj = new yginfoTableAdapters.YGDAAdapter();
        ygobj.Insert(  string name,birth, dzrq,ht_stime,...);

    }
我想让即使日期为空也能插入数据成功.
如果用 (DateTime)object也不行

#8


UP 6F