Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在可为null的类型之前,如何将null值输入到datetime?_C#_Sql_Winforms - Fatal编程技术网

C# 在可为null的类型之前,如何将null值输入到datetime?

C# 在可为null的类型之前,如何将null值输入到datetime?,c#,sql,winforms,C#,Sql,Winforms,可空类型是在.NET3.X中引入的。假设我有一个DB table,其类型为datetime的列接受空值。如果列数据假定来自windows窗体客户机,那么如何创建datetime类型的属性并使其接受null,以便将null值发送到DB表列?在早期版本的.NEt中是如何做到这一点的 可空类型是在.NET3.X中引入的 不,它们是在.NET2.0中引入的。看 如何创建datetime类型的属性并使其接受null,以便将null值发送到DB表列 你不能。通常,人们使用DateTime.MinValue这

可空类型是在.NET3.X中引入的。假设我有一个DB table,其类型为datetime的列接受空值。如果列数据假定来自windows窗体客户机,那么如何创建datetime类型的属性并使其接受null,以便将null值发送到DB表列?在早期版本的.NEt中是如何做到这一点的

可空类型是在.NET3.X中引入的

不,它们是在.NET2.0中引入的。看

如何创建datetime类型的属性并使其接受null,以便将null值发送到DB表列

你不能。通常,人们使用DateTime.MinValue这个神奇的值来表示null,然后确保他们的对象/数据库转换层将其适当地转换为SQL null。另一种方法是使用一个单独的bool属性来指示实际值的存在,或者使用类似的单独类型

可空类型是在.NET3.X中引入的

不,它们是在.NET2.0中引入的。看

如何创建datetime类型的属性并使其接受null,以便将null值发送到DB表列


你不能。通常,人们使用DateTime.MinValue这个神奇的值来表示null,然后确保他们的对象/数据库转换层将其适当地转换为SQL null。另一种方法是使用一个单独的bool属性来指示实值的存在,或者使用一个单独的类型,如。DB中的可空类型与C的值类型中的可空类型没有连接。事实上,将null作为参数传递并不视为传递SQL null——相反,这意味着该参数毕竟没有被传递——这实际上是一个很大的区别。相反,您使用并仍然使用DBNull.Value,这是数据库系统能够理解的一个特殊值

正如Jon在回答中所说,在应用程序层上,您使用了一个神奇的值,比如DateTime.MinValue,它有如下内容:

cmd.Parameters.AddWithValue("@Par", 
    par == DateTime.MinValue ? (object)DBNull.Value : par);

DB中的可空类型与C的值类型中的可空类型没有连接。事实上,将null作为参数传递并不视为传递SQL null——相反,这意味着该参数毕竟没有被传递——这实际上是一个很大的区别。相反,您使用并仍然使用DBNull.Value,这是数据库系统能够理解的一个特殊值

正如Jon在回答中所说,在应用程序层上,您使用了一个神奇的值,比如DateTime.MinValue,它有如下内容:

cmd.Parameters.AddWithValue("@Par", 
    par == DateTime.MinValue ? (object)DBNull.Value : par);

根据您的问题,我假设您使用的是比.NET 2.0旧的.NET版本

如果是这种情况,您有几个选择:

使用神奇的日期值表示null。通常是DateTime.MinValue或DateTime.MaxValue 向类IsNull{Column}或{Column}IsNull}添加一个属性,如果该值为null,则该属性为true。
根据您的问题,我假设您使用的是比.NET 2.0旧的.NET版本

如果是这种情况,您有几个选择:

使用神奇的日期值表示null。通常是DateTime.MinValue或DateTime.MaxValue 向类IsNull{Column}或{Column}IsNull}添加一个属性,如果该值为null,则该属性为true。
您可以进行很多黑客操作,但最初的解决方案是将datetTimePicker的ShowCheckBox设置为true


因此,当复选框未选中时,datetimepicker的值将为null。

您可以进行很多操作,但最初的解决方案是将datetTimePicker的ShowCheckBox设置为true


因此,当复选框未选中时,datetimepicker的值将为空。

我没有使用旧版本我的当前版本为4.0。我正在创建一个类,但不喜欢在其中放入可为null的类型。所以我想知道?@PhillGreggan nullables怎么了?这听起来像是一个XY问题:为什么?这就是他们的目的!通过魔法值和/或额外的属性检查,它将看起来更加丑陋。你还知道你可以加一个吗?如果你的应用程序设计是基于代码的外观,那么你会有一套奇怪的优先级。我没有使用旧版本,我现在的版本是4.0。我正在创建一个类,但不喜欢在其中放入可为null的类型。所以我想知道?@PhillGreggan nullables怎么了?这听起来像是一个XY问题:为什么?这就是他们的目的!通过魔法值和/或额外的属性检查,它将看起来更加丑陋。你还知道你可以加一个吗?最后,不要使用Null,对吗?如果你是基于代码外观设计应用程序,那么你会有一组奇怪的优先级。这是怎么回事?我只是想这个家伙会从他的日期时间选择器中获取Null值。问题中没有提到日期时间选择器。这是怎么回事?我只是想我想这家伙会从他的日期时间选择器中得到一个空值。在这个问题中没有提到日期时间选择器。