2014-03-12 59 views
0

無效嘗試呼叫讀取器關閉時讀取。用c#獲取這個錯誤的asp.net? 我已經使用這個代碼讀取器關閉時調用無效嘗試。得到這個錯誤?

string catalogNo = string.Empty; 
string deleteID = string.Empty; 
Globals.Initialize("Text", "select CatelogNo,DeleteID from tbl_admin_quotation where QuotationID='" + quotation3 + "' order by id asc"); 
Globals.dr = Globals.cmd.ExecuteReader(); 
while (Globals.dr.Read() == true) 
{ 
    catalogNo = Globals.dr[0].ToString(); 
    deleteID = Globals.dr[1].ToString(); 
    decimal taqty = 0; 
    Globals.Initialize("Text", "select qty from tbl_admin_quotation where DeleteID='" + deleteID + "'"); 
    Globals.dr3 = Globals.cmd.ExecuteReader(); 
    if (Globals.dr3.Read() == true) 
    { 
     taqty = Convert.ToDecimal(Globals.dr3[0].ToString()); 
    } 
    Globals.dr3.Dispose(); 
    Globals.dr3.Close(); 
    Globals.Initialize("Text", "select Pqty,Hqty from tbl_admin_stock where CatelogNo='" + catalogNo + "'"); 
    Globals.dr = Globals.cmd.ExecuteReader(); 
    if (Globals.dr.Read() == true) 
    { 
     if (Convert.ToDecimal(Globals.dr[0].ToString()) != 0) 
     { 
      Globals.Initialize("Text", "update tbl_admin_stock set Pqty=Pqty+'" + Convert.ToDecimal(taqty) + "' where CatelogNo='" + catalogNo + "'"); 
      Globals.cmd.ExecuteNonQuery(); 
     } 
     else if (Convert.ToDecimal(Globals.dr[1].ToString()) != 0) 
     { 
      Globals.Initialize("Text", "update tbl_admin_stock set Hqty=Hqty-'" + Convert.ToDecimal(taqty) + "' where CatelogNo='" + catalogNo + "'"); 
      Globals.cmd.ExecuteNonQuery(); 
     } 
    } 
    Globals.dr.Dispose(); 
    Globals.dr.Close(); 
} 

    Globals.dr.Dispose(); 
Globals.dr.Close(); 
Globals.Initialize("Text", "delete from tbl_admin_quotation where [email protected]"); 
Globals.cmd.Parameters.AddWithValue("@QuotationId", quotation3); 
Globals.cmd.ExecuteNonQuery(); 

UpdatePanelMain.Update(); 
GridviewBind(); 
+4

說實話,我會把你的'Globals'類扔進垃圾桶,因爲它只是一個討厭的錯誤來源。 http://stackoverflow.com/questions/9705637/executereader-requires-an-open-and-available-connection-the-connections-curren –

+3

是的。喧囂的廢話 - 你使用非全球物體的全球持有者?看到很多不好的代碼,這一個打到第一位。並沒有使用的使用。你怎麼樣清理你的代碼並開始遵循最佳實踐 - 然後基於不那麼好的代碼的錯誤將會消失。 – TomTom

+0

您應該檢查此代碼並重新考慮設計。重寫FTW。 –

回答

0

如果你與你找不到明顯的問題和問題的代碼,首先解決的突出問題,然後模糊的問題,將有可能成爲明顯的:

擺脫的環球垃圾,並把using在適當的地方,然後讓Dispose()調用,而不是明確也將解決這個問題。

+0

-can你可以顯示任何使用條件的例子嗎?先謝謝 – user3259635

+0

http://msdn.microsoft.com/en-us //library/yh598w02.aspx –

相關問題