2011-12-20 74 views
2

我想输入一个日期到Oracle数据库。有时这个值将为空。所以在我写的函数中,我需要一种方法来传递这个空值。我将这个日期作为参数传递给存储过程。该参数可以为null。我正在使用Oracle.DataAccess dll来让这件事情起作用。如果它确实是空的,我想只是抛出一个空变量。你认为那会奏效吗?下面是我目前设立这种情况下...有没有这样的事情在C#中的空白日期

cmd.Parameters.Add("ACTIVE_DATEIn", DateTime.Parse(ActiveDate)); 
conn.Open(); 
outcome = cmd.ExecuteNonQuery(); 

活动日期是,我要通过在可能的空变量。显然,你不能转换为空值转换成日期时间。你们会建议做什么?

回答

8

由于DateTimestruct,因此它不能包含null值。

有些人使用DateTime.MinValue来存储空值。一个更好的方法可能是使ActiveDate代替DateTime?

更新:

您也可以尝试这样的:

cmd.Parameters.Add("ACTIVE_DATEIn", (ActiveDate == null ? OracleDate.Null : OracleDate.Parse(ActiveDate))); 
+0

不好。我一直得到同样的例外。但我确实喜欢这个答案。 – SoftwareSavant 2011-12-20 20:04:57

+0

如果值为null,请尝试传入'OracleDate.Null'。 – 2011-12-20 20:08:43

3

您可以通过DateTime放置?类型后实施INullable。

DateTime? date; 

这是ofcourse相当于

Nullable<DateTime> date; 
1

您可以使用DateTime.MinValue而不是空的,或者使你的DateTime对象为空。

1

如果您的ActiveDate代表null,则可能需要使用DBNull.Value

相关问题