C# 从c调用存储过程时,枚举未产生任何结果#

C# 从c调用存储过程时,枚举未产生任何结果#,c#,sql-server,C#,Sql Server,我正在使用SQL Server 2014。我试图在这里调用存储过程,结果是0行中有一个 “枚举未产生任何结果” 信息。这不是一个错误。我怎样才能解决这个问题 我的推测是,当然是参数,尤其是DateTime类。我还使用了SqlDateAdapter,但仍然得到了相同的结果 下面是代码。提前谢谢 public HttpResponseMessage GET() { string connstr = ConfigurationManager.ConnectionStrings["xyz

我正在使用SQL Server 2014。我试图在这里调用存储过程,结果是0行中有一个

“枚举未产生任何结果”

信息。这不是一个错误。我怎样才能解决这个问题

我的推测是,当然是参数,尤其是DateTime类。我还使用了
SqlDateAdapter
,但仍然得到了相同的结果

下面是代码。提前谢谢

public HttpResponseMessage GET()
{
        string connstr = ConfigurationManager.ConnectionStrings["xyz"].ConnectionString;
        DataSet ds = new DataSet();
        //SqlDataAdapter adapter;
        SqlDataReader reader;
        string testDate1 = "2017-01-16";
        DateTime dt1 = DateTime.ParseExact(testDate1, "yyyy-MM-dd", CultureInfo.InvariantCulture);

        string testDate2 = "2016-12-16";
        DateTime dt2 = DateTime.ParseExact(testDate2, "yyyy-MM-dd", CultureInfo.InvariantCulture);

        SqlParameter[] parameters = new SqlParameter[4];
        parameters[0] = new SqlParameter("@date1", SqlDbType.DateTime);
        parameters[0].Value = testDate1;

        parameters[1] = new SqlParameter("@date2", SqlDbType.DateTime);
        parameters[1].Value = testDate2;

        parameters[2] = new SqlParameter("@order", SqlDbType.Int);
        parameters[2].Value = 2;

        parameters[3] = new SqlParameter("@limit", SqlDbType.Int);
        parameters[3].Value = 100;

        try
        {

            SqlConnection conn = new SqlConnection(connstr);
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText="dbo.[abc]";
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Connection = conn;
            conn.Open();

            foreach(SqlParameter sprocParams in parameters){
                cmd.Parameters.Add(sprocParams);
            }

            reader = cmd.ExecuteReader();
            while(reader.HasRows){
                Console.WriteLine(reader.GetInt32(0));
            }
            conn.Close();
        }
        catch(SqlException sqe){
            System.Diagnostics.Debug.WriteLine(sqe.Message);
            System.Diagnostics.Debug.WriteLine(sqe.StackTrace);
        }
}            

将引用传递给字符串而不是日期时间

parameters[0] = new SqlParameter("@date1", SqlDbType.DateTime)
parameters[0].Value = dt1;

哪一行正在抛出异常?顺便说一句,您可以跳过for循环来添加参数。只需使用
cmd.Parameters.AddRange(Parameters)如果使用相同的参数从SSMS运行存储过程,它是否返回行?你能发布存储过程吗?伙计们,在我发布这个之后,我马上就知道了。我的错。这是一个非常愚蠢的错误。我交换了日期1和日期2。sproc在订单中期待它。谢谢你!伙计们,在我发布这篇文章的那一刻,我就明白了。我的错。这是一个非常愚蠢的错误。我交换了日期1和日期2。sproc在订单中期待它。谢谢你!