将日期从日历传递到存储过程中,但将日期获取为NULL

时间:2018-12-24 06:49:55

标签: c# asp.net sql-server ado.net

我正在将fromdatetodate从ASP.NET代码传递到SQL Server,但是在此过程中,两个日期的值都为空。

ASP.NET代码:

using (SqlCommand cmd = new SqlCommand("PRRNASTIEDOWNLOAD_Client", sqlConn))
{
    cmd.Parameters.AddWithValue("@FROMDATE", System.DateTime.Now.ToString("yyyy-mm-dd", System.Globalization.CultureInfo.InvariantCulture));
    cmd.Parameters.AddWithValue("@TODATE", System.DateTime.Now.ToString("yyyy-mm-dd", System.Globalization.CultureInfo.InvariantCulture));

    if (sqlConn.State != ConnectionState.Open)
    {
        sqlConn.Open();
    }

    SqlDataReader rdr = cmd.ExecuteReader();
    dt.Load(rdr);
}

但是我在过程中获取的日期值为null

1 个答案:

答案 0 :(得分:2)

您需要像这样指定命令的类型:

cmd.CommandType = CommandType.StoredProcedure;

您需要指定您正在调用存储过程,而不是简单的命令文本。也可以看看: When executing a stored procedure, what is the benefit of using CommandType.StoredProcedure versus using CommandType.Text?

您还需要使用Add而不是AddWithValue来精确传递给SP的参数类型,如下所示:

cmd.Parameters.Add("@FROMDATE", System.Data.SqlDbType.DateTime).Value = System.DateTime.Now;

以下文章也可能很有趣:

Can we stop using AddWithValue() already?