从c#

时间:2017-01-18 19:11:18

标签: c# sql-server

我正在使用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);
        }
}            

1 个答案:

答案 0 :(得分:0)

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

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