Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia galera.
Coloquei um sistema meu para "rodar" e as vezes eu tenho esse erro "ExecuteReader requires an open and available Connection. The connection's current state is closed".
O maior problema é que isso acontece as vezes, nao acontece constantemente, fiz varias verificações e mesmo assim não conseguir resolver o problema. Segue abaixo uma parte do codigo.
So para deixar mais claro, ExecuteQuerySy -> conecta em um banco SyBase e ExecuteQuery -> Conecta em um banco Sql Server.
Variáveis
public SqlConnection sConn = new SqlConnection();
public OdbcConnection sSyConn = new OdbcConnection();
Função que da o erro:
public bool validaUsuario(string usr, string pwd, out string razaoSocial, out string codContrato, string ip) {
string strSql;
strSql = "exec db_extranet..sp_login_x25 '" + strEscape(usr) + "','" + strEscape(pwd) + "'";
clsBanco db = new clsBanco();
using (OdbcDataReader dr = db.ExecuteQuerySy(strSql)) {
if (dr.HasRows)
{
try
{
dr.Read();
razaoSocial = dr["txt_raz_social"].ToString();
codContrato = dr["cod_contrato"].ToString();
strSql = "exec axaDatos..sp_atualiza_login_x25 '" + strEscape(ip) + "','" + strEscape(usr) + "'";
dr.Close();
//strSql = "Update db_tabela..tb_prestador_x25 set ind_logado='S', cod_ip='" + strEscape(ip) + "' where cod_prestador='" + strEscape(usr) + "'";
SqlDataReader dr2 = db.ExecuteQuery(strSql);
dr2.Close();
return true;
}
catch (SqlException ex)
{
WriteFile("SQL EX: " + ex.Message);
razaoSocial = "";
codContrato = "";
return false;
}
catch (Exception ex) {
WriteFile("SQL EX: " + ex.Message);
razaoSocial = "";
codContrato = "";
return false;
}
}
else
{
razaoSocial = "";
codContrato = "";
return false;
}
}
}public SqlDataReader ExecuteQuery(string strSql)
{
try
{
SqlCommand command = new SqlCommand();
command.CommandType = CommandType.Text;
command.CommandText = strSql;
command.Connection = sConn;
if (sConn.State == 0)
{
Conecta();
}
SqlDataReader reader = command.ExecuteReader();
return reader;
}
catch (SqlException ex) {
clsFuncoes fnc = new clsFuncoes();
fnc.WriteFile("ExecuteQuery error : " + ex.Message);
return null;
}
}public void Conecta()
{
try
{
sConn.ConnectionString = getconexao();
if (sConn.State == 0)
{
sConn.Open();
}
}
catch (Exception e)
{
}
}Carregando comentários...