如何在sql server中的datetime类型列中插入null

soc*_*ial 8 c# sql-server

我有一个表,其中有一些日期时间类型列.我使用存储过程将值插入表中.在存储过程中,我有变量接受null以插入表中.我的问题是当我尝试将空值插入到我的表的datetime列时,它会抛出错误.我的代码是.

    System.Data.SqlTypes.SqlDateTime getDate;
//set DateTime null
getDate = SqlDateTime.Null;

if (InsertDate.Text == "")
{
cmd1.Parameters["@InsertDate"].Value = getDate;
}
else
{
cmd1.Parameters["@InsertDate"].Value = InsertDate.Text;
}
Run Code Online (Sandbox Code Playgroud)

Dr *_*izo 12

cmd1.Parameters["@InsertDate"].Value = getDate ?? DBNull.Value;
Run Code Online (Sandbox Code Playgroud)

关键是DBNull.Value.我想你有一个可以为空的DateTime变量,即DateTime? someVariable.您可以将其测试为null以及是否使用DBNull.Value(如上所示).


小智 7

if (//some condition)   
{
   cmd.Parameters.AddWithValue("@dateofBirth", txtdob.text);
}
else 
{ 
   cmd.Parameters.AddWithValue("@dateofBirth", DBNull.Value); 
}
Run Code Online (Sandbox Code Playgroud)


小智 5

要将空值传递给数据库,您可以使用 DBNull.Value。请尝试这个

 if (string.IsNullOrWhiteSpace(InsertDate.Text))
  {
   cmd1.Parameters["@InsertDate"].Value =DBNull.Value;
  }
 else
  {
   cmd1.Parameters["@InsertDate"].Value = InsertDate.Text;
  }
Run Code Online (Sandbox Code Playgroud)


zxc*_*zxc 0

在存储过程中执行如下操作:

insert into table(date)
values(case when @InsertDate ='' then 
               null 
            else 
               @insertDate 
       end)
Run Code Online (Sandbox Code Playgroud)