2017-02-19 11 views
1

Я новичок в ASP.NET, и я застрял в этой проблеме. Я получаю сообщение об ошибке: Ошибка: System.InvalidOperationException: соединение не было закрыто. Текущее состояние соединения открыто. в System.Data.ProviderBase.DbConnectionInternal. Вот мой код, ошибка указывает на выражение «while». Я пробовал много вещей, но ничего не получилось. Я знаю, что мне нужно закрыть соединение, если if-statement верно, но не знает, как это сделать. Может ли кто-нибудь помочь мне в этом? Благодарю.Как закрыть mysql-соединение после if-statement, если оно верно?

protected void loadtour() 
    { 
     try 
     { 

      conn.Open(); 
      string strSelect = "Select * From Agents where Agent_ID='" + AgID.Text + "'"; 
      SqlCommand cmd = new SqlCommand(strSelect, conn); 
      SqlDataReader myReader = cmd.ExecuteReader(); 

      while (myReader.Read()) 
      { 
       if (myReader["Agent_Status"].ToString() == "On Tour") 
       { 
        Label1.Text = "Assigned Tour Details:"; 
        try 
        { 
         conn.Open(); 
         SqlDataAdapter da = new SqlDataAdapter("SELECT PackageInfo.pkg_Name, PackageInfo.pkg_Type, PackageInfo.pkg_Status, Packages.pkg_Country, Packages.pkg_Start, Packages.pkg_End, PackageInfo.Agent_ID, PackageInfo.Agent_Name FROM PackageInfo INNER JOIN Packages ON PackageInfo.pkg_ID = Packages.pkg_ID WHERE(PackageInfo.Agent_ID = '" + AgID.Text + "')", conn); 
         DataTable ds = new DataTable(); 
         da.Fill(ds); 
         gv1.DataSource = ds; 
         gv1.DataBind(); 

        } 
        catch (Exception ex) 
        { 
         Response.Write("Error:" + ex.ToString()); 
        } 
        conn.Close(); 

       } 


       else 
       { 
        Label1.Text = "No Tour Assigned Yet!"; 
       } 

       myReader.Close(); 
       conn.Close(); 

      } 
     } 

     catch (Exception ex) 
     { 

      Response.Write("Error:" + ex.ToString()); 
     } 

    } 

ответ

0
using (var connection = new SqlConnection(connectionString)) 
{ 
    connection.Open(); 
    //Do stuff with the connection 
} 

Оберните соединение в using блоке. Это гарантирует, что он всегда закрывается.