如何为DateTime类型赋Null值!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为DateTime类型赋Null值!!相关的知识,希望对你有一定的参考价值。

参考技术A sql
换成
存储过程。
存储过程,
也是要参数的。
设置存储过程的参数的
Value
=
System.DBNull.Value
--
测试存储过程
CREATE
PROCEDURE
HelloWorld2
@UserName
VARCHAR(10),
@OutVal
VARCHAR(10)
OUTPUT,
@InoutVal
VARCHAR(20)
OUTPUT
AS
BEGIN
SET
@OutVal
=
'A';
SET
@InoutVal
=
@UserName
+
@InoutVal;
END;
go
///
<summary>
///
测试执行存储过程.
///
</summary>
///
<param
name="conn"></param>
private
void
CallProcedure(SqlConnection
conn)

//
创建一个
Command.
SqlCommand
testCommand
=
conn.CreateCommand();
//
定义需要执行的SQL语句.
testCommand.CommandText
=
"HelloWorld2";
//
定义好,本次执行的类型,是存储过程.
testCommand.CommandType
=
CommandType.StoredProcedure;
//
定义要查询的参数.
//
第一个参数,是输入的.
testCommand.Parameters.Add(new
SqlParameter("@UserName",
"HeiHei"));
//
第2个参数,是输出的.
SqlParameter
para2
=
new
SqlParameter("@OutVal",
SqlDbType.VarChar,
10);
para2.Direction
=
ParameterDirection.Output;
testCommand.Parameters.Add(para2);
//
第3个参数,是既输入又输出的.
SqlParameter
para3
=
new
SqlParameter("@InoutVal",
SqlDbType.VarChar,
20);
para3.Direction
=
ParameterDirection.InputOutput;
para3.Value
=
"HAHA";
testCommand.Parameters.Add(para3);
//
ExecuteNonQuery
方法,表明本次操作,不是一个查询的操作。将没有结果集合返回.
//
返回的数据,将是
被影响的记录数.
int
insertRowCount
=
testCommand.ExecuteNonQuery();
//
存储过程执行完毕后,取得
output
出来的数据.
String
pa2
=
testCommand.Parameters["@OutVal"].Value.ToString();
String
pa3
=
testCommand.Parameters["@InoutVal"].Value.ToString();
Console.WriteLine("调用
0
存储过程之后,
@OutVal=1;
@InoutVal=2",
testCommand.CommandText,
pa2,
pa3)。

.NET DateTime类型变量作为参数时设置默认值

一个小的 Tips.

.NET 中函数参数的默认值需要是编译时常量。如果参数是引用类型,可以设置Null,如果是值类型,可以设置相应的编译时常量,如整型可以用整数,但对于DateTime(结构体,值类型)想要设置默认类型时要如何处理?

通常情况下会给 DateTime 结构体默认当时时间,即 DateTime.Now,但 DateTime.Now 不是编译时常量,因此无法通过编译。

如以下代码无法通过编译:

public const DateTime defaultDateTime = DateTime.Now;

但可以通过设置 DateTime 类型参数为可空类型,给其默认参数为 null,并在函数中进行判断赋值来实现,如下代码:

static void TestMethod(DateTime? date = null)
{
    date = date ?? DateTime.Now; 
}

以上思路是将 DateTime 参数转换为可空类型,并赋予默认值 null,然后在函数体内先判断参数是否为空,如果为空则用 DateTime.Now 来赋值,否则使用参数值。

 

以上内容很简单,只是觉得这个 Tips 很好玩。

以上是关于如何为DateTime类型赋Null值!!的主要内容,如果未能解决你的问题,请参考以下文章

如何给一个decimal数据类型的变量赋个空值?

如何为 int 列插入 None/Null 值?

SQL SERVER2005数据库有个字段以datetime类型允许为空 在C#怎么样把这个时间字段赋为null

如何为注释类型编码可选的默认注释值

如何为 type='datetime-local' 的 Input 设置最小值和最大值?

如何为每一行将 DateTime 列增加一秒?