C# SQL字段的日期,不想从winform上的文本框中保存任何内容到该字段

C# SQL字段的日期,不想从winform上的文本框中保存任何内容到该字段,c#,sql,ado.net,C#,Sql,Ado.net,我在windows窗体上有文本框。对于其中一些,没有最初保存的日期。绑定到文本框的SQL字段的类型为:date。当我去保存一条新记录时,我得到一个System.Data.SqlTypes.SqlTypeException: SqlDateTime溢出。必须在1753年1月1日12:00:00 AM和9999年12月31日11:59:59 PM之间 在日期字段中还没有日期的情况下,如何保存此记录 这是我正在使用的代码 public static bool UpdateEngOrd(EngOrd o

我在windows窗体上有文本框。对于其中一些,没有最初保存的日期。绑定到文本框的SQL字段的类型为:date。当我去保存一条新记录时,我得到一个System.Data.SqlTypes.SqlTypeException:

SqlDateTime溢出。必须在1753年1月1日12:00:00 AM和9999年12月31日11:59:59 PM之间

在日期字段中还没有日期的情况下,如何保存此记录

这是我正在使用的代码

public static bool UpdateEngOrd(EngOrd oldEngOrd, EngOrd newEngOrd)
    {

        SqlConnection cnn = SqlDB.GetConnection();
        string strsql =
            "UPDATE EngOrd SET " +
            "filetype = @newfiletype, reqmeetdue = @newreqmeetdue " +               
            "WHERE eo = @oldeo";
        SqlCommand cmd = new SqlCommand(strsql, cnn);
        cmd.Parameters.AddWithValue("@newfiletype", newEngOrd.FileType);
        if (newEngOrd.ReqMeetDue == DateTime.MinValue)
            cmd.Parameters.AddWithValue("@newreqmeetdue", DBNull.Value);
        else
            cmd.Parameters.AddWithValue("@newreqmeetdue", newEngOrd.ReqMeetDue);
          cmd.Parameters.AddWithValue("@oldeo", oldEngOrd.EO);

        try
        {
            cnn.Open();
            int count = cmd.ExecuteNonQuery();
            if (count > 0)
                return true;
            else
                return false;
        }
        catch (SqlException ex)
        {
            throw ex;
        }
        finally
        {
            cnn.Close();
        }
    }

您将其设置为新的DateTime,默认为DateTime.MinValue,即1/1/0000。请尝试传入DBNull。

是否已将sql表中的此日期字段设置为可空

我不确定,但这对你来说可能是个问题

您可以使用以下命令使其为空

ALTER TABLE [TableName] ALTER COLUMN [ColumnName] INTEGER  NULL
试着这样,

   Dim _Date As SqlDateTime
   _Date = SqlDateTime.Null

   If (IsDBNull(Me.txtBox.Value)) Then
      _obj.Date= _Date
      Else
      _obj.Date=Convert.ToDateTime(txtBox.Value)
   End If

我发现了问题。上述语法有效。问题出在代码的添加部分(未发布)。我以为是更新部分

SQL字段可以为空吗?如何将数据保存到数据库中?此问题中的信息太少。sql字段可为空是的,我正在将数据保存到sql数据库我问您如何保存数据。你根本没有给我们任何代码。我输入了上面的代码。该字段为newEngOrd.ReqMeetDue