我正在使用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);
}
}
答案 0 :(得分:0)
您将引用传递给字符串而不是日期时间。
parameters[0] = new SqlParameter("@date1", SqlDbType.DateTime)
parameters[0].Value = dt1;