0
我使用SQL Server 2014,我想在這裏調用存儲過程和它導致0行與枚舉沒有結果,同時調用存儲過程從C#
「枚舉沒有結果」
消息。這不是一個錯誤。我怎麼解決這個問題?
我的推測是,與參數,尤其是與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);
}
}
哪一行引發異常?順便提一句,你可以跳過for循環來添加參數。只需使用'cmd.Parameters.AddRange(parameters);' –
如果您使用相同的參數從SSMS運行存儲過程,它會返回行嗎?你可以發佈存儲過程嗎? –
我知道了,我發佈這一刻後的那一刻。我的錯。這是一個非常愚蠢的錯誤。我交換了日期1和日期2. sproc期待它的順序。 雖然謝謝! –