2017-09-21 122 views
-1

我有3層網站asp.net c#。我想選擇用戶並檢查他的用戶類型以進行登錄,但我的代碼不工作。並顯示以上錯誤。請求幫助我,我該怎麼做。 我的代碼DAL:連接未關閉。連接的當前狀態已打開! asp.net c#

public SqlDataReader select_user(string UserName) 
     { 
      connect.Open(); 
      SqlCommand cmd = new SqlCommand("SELECT * FROM UserInfo WHERE [email protected]", connect); 
      cmd.Parameters.AddWithValue("@UserName", UserName); 
      SqlDataReader dr = cmd.ExecuteReader(); 
      return dr; 
     } 

和BL:

public SqlDataReader Get_user() 
     { 
      return da.select_user(UserName); 
     } 

和代碼接口:

try 
     { 

      bll.UserName = UserNameTextBox.Text; 
      Session.Add("_UserName", bll.UserName); 
      bll.Get_user(); 
      SqlDataReader dr = bll.Get_user(); 
      if (dr.HasRows) 
      { 
       dr.Read(); 
       int Utyp = bll.UserTyp; 
       if (Utyp == 0) 
       { 
        Session.Add("Msg_", "dear user. you are unactive yet"); 
        Response.Redirect("ShowMessage.aspx", false); 
       } 
       else 
        if (Utyp == 1) 
        { 
         Response.Redirect("index.aspx", false); 
        } 

      } 
      else 
      { 

      } 
     } 
     catch (Exception ex) 
     { 
      Session.Add("Msg_", " : <br>" + ex.Message); 
      Response.Redirect("~/ShowMessage.aspx"); 
     } 
+0

你可以使用using語句來包裝所有ado.net對象嗎?如使用(){},並且會小心關閉並處理對象 –

+0

答案適合你@reza嗎? – mjwills

回答

1
connect.Open(); 

應改爲:

if (connect.State == ConnectionState.Closed) { 
    connect.Open(); 
} 

以確保它只嘗試打開一次連接,而不是多次。

請注意,您也可以考慮根據this answer添加using報表。

相關問題