Правильный способ закрытия соединения SQL - без использования MARS - PullRequest
0 голосов
/ 01 марта 2019

Мой клиентский сервер не поддерживает MARS.Поэтому мне нужно закрыть каждое соединение sql после выполнения каждого запроса.Но у меня есть сомнения по поводу закрытия соединения, когда оно приходит к запросу с несколькими вложенными циклами.Мой код

  protected void btn_upload_Click(object sender, ImageClickEventArgs e)
{
   try
   {
      SqlConnection con = obj.getcon();
      con.Open();
      SqlCommand cmd77 = new SqlCommand("select * from emp_details where emp_id='"+emp_id+"'", con);
      SqlDataReader dr77 = cmd77.ExecuteReader();
       if (dr77.HasRows)//dont insert if employee already exist
         {
       string query1 = "UPDATE emp_details SET emp_name= @emp_name  where emp_id=@emp_id";
        SqlCommand cmd = new SqlCommand(query1, con);
        cmd.Parameters.Add(new SqlParameter("emp_id", emp_id));
        cmd.Parameters.Add(new SqlParameter("emp_name", emp_name))
        cmd.ExecuteNonQuery();
         }
         else 
         {
        insertdataintosql(GetempID,GetempName);
         }    
        con.Close();
     }
    catch (Exception ex)
    {
       string ex=ex.Message;
    }
}
public void insertdataintosql(string emp_id, string emp_name)
{   
        SqlConnection con = obj.getcon();
        con.Open();
        string query = "insert into emp_details(emp_id,emp_name) values(@emp_id,@emp_name)";
        SqlCommand cmd = new SqlCommand(query, con);
        cmd.Parameters.Add(new SqlParameter("emp_id", emp_id));
        cmd.Parameters.Add(new SqlParameter("emp_name", emp_name))
        cmd.ExecuteNonQuery();
        con.Close();
}

Где мне закрыть первое соединение для SqlDataReader (dr77), так как оно используется в цикле if else?Если не используется MARS, нужно ли открывать / закрывать новое соединение по запросу на обновление?Так нужно ли закрыть dr77 до этого?

...