首先,要能够插入null
到数据库列中,该列必须接受null
s。在设计器中打开表,查看相关列是否可为空。如果不是,并且您尝试插入空值,您将收到错误消息:
无法将值 NULL 插入列“InsertDate”、表“TableName”;列不允许空值。
也就是说,由于您使用存储过程来插入数据,我建议在过程级别使用默认值作为参数,而不是增加应用程序代码的负担。比,你不能在应用程序端设置参数,它会正常工作:
create procedure InsertIntoTable
-- ....other parameters here...
@InsertDate datetime = null -- this means that if the value is not supplied,
-- null is used by default
as begin
insert into TableName (InsertDate) values (@InsertDate)
end
在 C# 方面,只需执行以下操作:
if (!string.IsNullOrWhitespace(InsertDate.Text)) {
// check to see if the entered text is actually a date
DateTime insertDate = ... some parsing/verification code...;
cmd1.Parameters["@InsertDate"].Value = insertDate;
}
注意没有else
分支,所以如果InsertDate
为空,则根本不发送参数。