1
我的asp.net應用程序出現了一個奇怪的問題。總之,我有一個sql命令,取決於其他sql命令的結果。這個鏈中有五個sql命令,但問題發生在第四個。Asp.Net SqlDataReader的值在試圖訪問和使用時奇蹟般地變爲null
第5條命令必須將數據保存到歸檔表中。當它必須運行並從第4個命令中取得值completion_date時,它會拋出一個空引用異常。其實它說,Reader4 [0]不能被讀取,因爲它有空值。這是錯誤的,因爲它有價值,因爲在數據庫中這些查詢工作正常,也因爲條件如果(Reader4.HasRows == true)是真的,這意味着WHERE聲明在第四個命令是真實的,這也是包括檢查completion_date!這個asp.net有什麼問題?
Command4 = new SqlCommand("SELECT trade_date FROM Schedule WHERE [email protected] AND [email protected] AND [email protected] AND status_id=1 AND completion_date IS NOT NULL", Connection4); //note the completion_date check
Command4.Parameters.Add("@traiderID", Convert.ToInt32(Reader3[0]));
Command4.Parameters.Add("@positionID", CurrentPosition);
Command4.Parameters.Add("@goodID", Convert.ToInt32(Reader1[0]));
Reader4 = Command4.ExecuteReader();
if (Reader4.HasRows == true) //this check is done successfully
{
Command5 = new SqlCommand("INSERT INTO Archive (traider_id, good_id, completion_date) VALUES (@traiderID, @goodID, @completionDate)", Connection5);
Command5.Parameters.Add("@traiderID", Convert.ToInt32(Reader3[0]));
Command5.Parameters.Add("@goodID", Convert.ToInt32(Reader1[0]));
Command5.Parameters.Add("@completionDate", Convert.ToDateTime(Reader4[0])); //Here is the problem
Command5.ExecuteNonQuery();
}
Reader4.Close();
任何想法,傢伙?我一直在試圖找出問題所在。這段代碼是唯一可能出錯的地方,但Reader4的值如何變成空值?它在表中不爲null,即使Command4被執行也不爲null!
Oooohh,daaaammn!難以置信的!男人,我想我顯然已經完全勞累了兩天沒有睡覺)我怎麼錯過了!!!))謝謝。真的覺得很愚蠢。你的答案。並抓+1) – SWA
沒問題。我發現這樣的錯誤的原因是大塊代碼。嘗試分割更多。 –
是的,那是真的。 – SWA