Search code examples
asp.netmysqldatareader

asp.net reuse connection and command


before this i create a new "MySqlConnection" and "MySqlCommand" for 2_1 and 2_2, but it will make my code very long and confuse, so i decided to reuse these which i already declared for 1_1. I have done that as below:

MySqlConnection connSelect = new MySqlConnection(connectionString);
MySqlCommand cmdSelect = connSelect.CreateCommand();

cmdSelect.Parameters.Add("username", MySqlDbType.VarChar);
cmdSelect.Parameters["username"].Value = Request.QueryString["username"].ToString();

cmdSelect.CommandText = "SELECT * FROM member WHERE username = @username";

connSelect.Open();

MySqlDataReader drSelect1_1 = cmdSelect.ExecuteReader();

if (drSelect1_1.Read())
{
    //1_1
    this.lbl1_1.Text = drSelect1_1["username"].ToString();

//2_1
if (drSelect1_1["direct1"].ToString() != null)
{
    this.lbl2_1.Text = drSelect1_1["direct1"].ToString();

    connSelect.Close();
    cmdSelect.CommandText = "SELECT * FROM member WHERE username = '" + this.lbl2_1.Text + "'";
    connSelect.Open();

    MySqlDataReader drSelect2_1 = cmdSelect.ExecuteReader();

if (drSelect2_1.Read())
{
//some code
}
}

//2_2
if (drSelect1_1["direct2"].ToString() != null)      //ERROR HERE
{
    this.lbl2_2.Text = drSelect1_1["direct2"].ToString();
}
}

there is a error: "No current query in data reader" at 2_2, where i did wrong here? please advice me thx :)


Solution

  • ok, i out of my idea already, i move back to my origin method. i will come back to this question if my time is allows to. so by now you guys can take it as a reference. If you have a better solution, please share it with us. :) much appreciate.
    So, basically, my idea is to create every MySqlConnection, MySqlCommand, and MySqlDataReader for every "IF" condition. here you go.

      MySqlConnection connSelect = new MySqlConnection(connectionString);
      MySqlCommand cmdSelect = connSelect.CreateCommand();
    
      cmdSelect.Parameters.Add("username", MySqlDbType.VarChar);
      cmdSelect.Parameters["username"].Value = Request.QueryString["username"].ToString();
    
      cmdSelect.CommandText = "SELECT * FROM member WHERE username = @username";
    
      connSelect.Open();
    
      MySqlDataReader drSelect1_1 = cmdSelect.ExecuteReader();
    
      if (drSelect1_1.Read())
      {
          //1_1
          this.lbl1_1.Text = drSelect1_1["username"].ToString();   
    
          //2_1
          if (drSelect1_1["direct1"].ToString() != null)
          {
              this.lbl2_1.Text = drSelect1_1["direct1"].ToString();
              MySqlConnection connSelect2_1 = new MySqlConnection(connectionString);
              MySqlCommand cmdSelect2_1 = connSelect2_1.CreateCommand();
    
              cmdSelect2_1.CommandText = "SELECT * FROM member WHERE username = '" + this.lbl2_1.Text + "'";
    
              connSelect2_1.Open();
    
              MySqlDataReader drSelect2_1 = cmdSelect2_1.ExecuteReader();
    
              if (drSelect2_1.Read())
              {
                  //some code
              }
              connSelect2_1.Close();
          }
    
          //2_2
          if (drSelect1_1["direct2"].ToString() != null)
          {
              this.lbl2_2.Text = drSelect1_1["direct2"].ToString();
    
              MySqlConnection connSelect2_2 = new MySqlConnection(connectionString);
              MySqlCommand cmdSelect2_2 = connSelect2_2.CreateCommand();
    
              cmdSelect2_2.CommandText = "SELECT * FROM member WHERE username = '" + this.lbl2_2.Text + "'";
    
              connSelect2_2.Open();
    
              MySqlDataReader drSelect2_2 = cmdSelect2_2.ExecuteReader();
    
              if (drSelect2_2.Read())
              {
                  //some code
              }
              connSelect2_2.Close();          
          }
      }
      connSelect.Close();