There is already an open DataReader associated with this Command which
must be closed first , with 2 distinct commands
I have this legacy code :
private void conecta()
{ if (conexao.State == ConnectionState.Closed) { conexao.Open(); }
}
public List<string[]>
get_dados_historico_verificacao_email_WEB(string email)
{
List<string[]> historicos = new List<string[]>();
conecta();
sql = "SELECT * FROM historico_verificacao_email WHERE nm_email =
'" + email + "' ORDER BY dt_verificacao_email DESC,
hr_verificacao_email DESC";
com = new SqlCommand(sql, conexao);
SqlDataReader dr = com.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
string[] dados_historico = new string[6];
dados_historico[0] = dr["nm_email"].ToString();
dados_historico[1] = dr["dt_verificacao_email"].ToString();
dados_historico[1] = dados_historico[1].Substring(0, 10);
//System.Windows.Forms.MessageBox.Show(dados_historico[1]);
dados_historico[2] = dr["hr_verificacao_email"].ToString();
dados_historico[3] = dr["ds_tipo_verificacao"].ToString();
sql = "SELECT COUNT(e.cd_historico_verificacao_email) QT
FROM emails_lidos e WHERE e.cd_historico_verificacao_email
= '" + dr["cd_historico_verificacao_email"].ToString() +
"'";
tipo_sql = "seleção";
conecta();
com2 = new SqlCommand(sql, conexao);
SqlDataReader dr3 = com2.ExecuteReader();
while (dr3.Read())
{
dados_historico[4] = dr3["QT"].ToString();
//quantidade de emails lidos naquela verificação
}
dr3.Close();
conexao.Close();
//login
dados_historico[5] = dr["cd_login_usuario"].ToString();
historicos.Add(dados_historico);
}
dr.Close();
}
else
{ dr.Close(); }
conexao.Close();
return historicos;
}
i have create two separates commands for erase the error but still
continues : "There is already an open DataReader associated with this
Command which must be closed first"
An additinal info in other app the same code is working.
No comments:
Post a Comment