我有一个允许更新数据库列的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保存到数据库?
答案 0 :(得分:3)
您必须围绕此处编写代码来处理,并在值为null时传递DbNull.Value
。
cmd.Parameters.Add("@proFD", SqlDbType.Date).Value = (tFD.Text.Trim().Length > 0) ? (object)tFD.Text.Trim() : DbNull.Value;