ASP.NET使用参数在SQL Server数据库中保存空日期值

时间:2013-01-03 16:14:06

标签: asp.net sql-server date webforms null

我有一个允许更新数据库列的Web表单应用程序。其中一个数据库列是Finish Date,它在SQL Server数据库中具有date数据类型。

我使用带有参数和文本框的SQL查询来为完成日期提供新值。

这是一个代码,它从网格中的文本框中获取日期的值:

TextBox tFD = (TextBox)grdProjectUpdate.Rows[e.RowIndex].Cells[11].FindControl("proFDTextBox");

然后我使用参数:

cmd.Parameters.Add("@proFD", SqlDbType.Date).Value = tFD.Text.Trim();

使用此SQL语句更新值:

UPDATE PMSprojects SET proFD = @proFD ,...    

只要提供实际日期,此解决方案就可以正常工作。但是,它不保存空值。如果我提供一个空字符串,它将被转换为1900-01-01日期,即使数据库中的列允许空值。

如何解决此问题并将null保存到数据库?

1 个答案:

答案 0 :(得分:3)

您必须围绕此处编写代码来处理,并在值为null时传递DbNull.Value

cmd.Parameters.Add("@proFD", SqlDbType.Date).Value = (tFD.Text.Trim().Length > 0) ? (object)tFD.Text.Trim() : DbNull.Value;