none
Sin salida, error: ExecuteReader: Connection property has not been initialized. RRS feed

  • Pregunta

  • ¡Hola amigos!

    estoy con un problema en un ExecuteReader y necessito su ayuda, aunque yo acceda la conexion de manera correcta y logre leer los parametros correctamente (he visto la ejecución del break point), mi DataReader no ejecuta correctamente y ocurre el error: ExecuteReader: Connection property has not been initialized.

    le doy code abajo: "¡Estoy sin salida!"

    protected void btEntrar_Click(object sender, EventArgs e)

            {

                try

                {

               

                string stConn = "server=secserver;database=intranet;UID=sa;PWD=Adm_123456";

                string sqlQuery = "SELECT iu.nm_user, iu.fk_id_centro_respons, iu.fk_cd_filial, iu.fk_chapa, iu.ativo, pa.fk_id_sistema, prf.sg_perfil FROM INTRANET_USERS iu, INTRANET_PERFIL_ACESSO pa, INTRANET_PERFIL prf WHERE iu.fk_chapa = @chapa AND iu.fk_chapa = pa.fk_chapa AND pa.fk_id_sistema = 6 AND pa.fk_id_perfil = prf.id_perfil and iu.fk_cd_filial = 1";

     

                SqlConnection Conn = new SqlConnection();

     

                //OleDbConnection Conn2 = new OleDbConnection();

     

                Conn.ConnectionString = stConn;

     

                //Conn2.ConnectionString = stConn2;

     

     

                    SqlCommand cmd = new SqlCommand();

     

                    cmd.CommandType = System.Data.CommandType.Text;

                    cmd.CommandText = sqlQuery;

                   

     

                    cmd.Parameters.Add("@chapa", this.txtUser.Text);

                    cmd.Parameters.Add("@usuario", this.txtUser.Text);

                    cmd.Parameters.Add("@senha", this.txtSenha.Text);

                    cmd.Parameters.Add("@id_sistema", this.Session["sistema"]);

     

                   

                   Conn.Open();

                  

                    SqlDataReader dr = cmd.ExecuteReader();

     

                              

                    dr.Read();

     

                        chapa = dr["fk_chapa"].ToString();

                        usuario = dr["fk_chapa"].ToString();

                        setor = dr["fk_id_centro_respons"].ToString();

                        sistema = Convert.ToInt32(dr["fk_id_sistema"]);

                        senha = dr["senha"].ToString();

                        //perfil = dr["fk_id_perfil"].ToString();

     

     

                        Session["chapa"] = chapa;

                        Session["usuario"] = usuario;

                        Session["setor"] = setor;

                        Session["sistema"] = sistema;

                        Session["senha"] = senha;

                        //Session["perfil"] = perfil;

                       

                   

                        //string chapa = Convert.ToString(Session["chapa"]);

                        //string usuario = Convert.ToString(Session["usuario"]);

                        //int sistema = Convert.ToInt32(Session["id_sistema"]);

     

                         lbResultado.Text = Session["chapa"].ToString() + Session["usuario"].ToString() + Session["sistema"].ToString();

                         

                         Conn.Close();

     

                }

                catch (Exception ex)

                {

     

                    lbResultado.Text = ex.Message;

                    //lbResultado.Text = ex.Message + " - " + ex.StackTrace;

     

                }

                

            }

    Sean bravos, ¡necesito tu ayuda!

    ¡Gracias, amigos(as)!

     

    jueves, 1 de abril de 2010 18:38

Respuestas


  • ademas el codigo que has puesto podrias tomar esta forma

    protected void btEntrar_Click(object sender, EventArgs e)
    {
        try
        {

            string stConn = "server=secserver;database=intranet;UID=sa;PWD=Adm_123456";

            using(SqlConnection Conn = new SqlConnection(stConn))
            {
                Conn.Open();

                string sqlQuery = @"SELECT iu.nm_user, iu.fk_id_centro_respons,
                                        iu.fk_cd_filial, iu.fk_chapa, iu.ativo,
                                        pa.fk_id_sistema, prf.sg_perfil
                                    FROM INTRANET_USERS iu, INTRANET_PERFIL_ACESSO pa,
                                    INTRANET_PERFIL prf
                                    WHERE iu.fk_chapa = @chapa AND iu.fk_chapa = pa.fk_chapa
                                    AND pa.fk_id_sistema = 6
                                    AND pa.fk_id_perfil = prf.id_perfil and iu.fk_cd_filial = 1";

                SqlCommand cmd = new SqlCommand(sqlQuery, Conn);
               
                cmd.Parameters.Add("@chapa", this.txtUser.Text);
                cmd.Parameters.Add("@usuario", this.txtUser.Text);
                cmd.Parameters.Add("@senha", this.txtSenha.Text);
                cmd.Parameters.Add("@id_sistema", this.Session["sistema"]);

                SqlDataReader dr = cmd.ExecuteReader();

                if(dr.Read())
                {
                    Session["chapa"] = dr["fk_chapa"].ToString();
                    Session["usuario"] = dr["fk_chapa"].ToString();
                    Session["setor"] = dr["fk_id_centro_respons"].ToString();
                    Session["sistema"] = Convert.ToInt32(dr["fk_id_sistema"]);
                    Session["senha"] = dr["senha"].ToString();

                    lbResultado.Text = string.Format("{0}{1}{2}", Session["chapa"], Session["usuario"], Session["sistema"]);
                }
            }
        }
        catch (Exception ex)
        {
            lbResultado.Text = ex.Message;
        }

    }

    analzialo creo que queda algo mas prolijo

     

    con el using evitas tener que usar el close() de lso objetos, ya que este se encarga de destruir la conexion

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 1 de abril de 2010 18:56
  • Saludo ,

     

    Ejecuta este script  , 

     string stConn = "server=secserver;database=intranet;UID=sa;PWD=Adm_123456";

                string sqlQuery = "SELECT iu.nm_user, iu.fk_id_centro_respons, iu.fk_cd_filial, iu.fk_chapa, iu.ativo, pa.fk_id_sistema, prf.sg_perfil FROM INTRANET_USERS iu, INTRANET_PERFIL_ACESSO pa, INTRANET_PERFIL prf WHERE iu.fk_chapa = @chapa AND iu.fk_chapa = pa.fk_chapa AND pa.fk_id_sistema = 6 AND pa.fk_id_perfil = prf.id_perfil and iu.fk_cd_filial = 1";

     

                SqlConnection Conn = new SqlConnection(stConn);

     

                SqlCommand cmd = new SqlCommand(sqlQuery, stConn);//El error estaba aqui tiens que indicarle los parametro [sqlQuery,stConn]

                cmd.CommandType = System.Data.CommandType.Text;

     

     

                cmd.Parameters.Add("@chapa", this.txtUser.Text);

                cmd.Parameters.Add("@usuario", this.txtUser.Text);

                cmd.Parameters.Add("@senha", this.txtSenha.Text);

                cmd.Parameters.Add("@id_sistema", this.Session["sistema"]);

     

     

                Conn.Open();

     

                SqlDataReader dr = cmd.ExecuteReader();

     

     

                dr.Read();

     

                chapa = dr["fk_chapa"].ToString();

                usuario = dr["fk_chapa"].ToString();

                setor = dr["fk_id_centro_respons"].ToString();

                sistema = Convert.ToInt32(dr["fk_id_sistema"]);

                senha = dr["senha"].ToString();

                //perfil = dr["fk_id_perfil"].ToString();

     

     

                Session["chapa"] = chapa;

                Session["usuario"] = usuario;

                Session["setor"] = setor;

                Session["sistema"] = sistema;

                Session["senha"] = senha;

                //Session["perfil"] = perfil;

     

     

                //string chapa = Convert.ToString(Session["chapa"]);

                //string usuario = Convert.ToString(Session["usuario"]);

                //int sistema = Convert.ToInt32(Session["id_sistema"]);

     

                lbResultado.Text = Session["chapa"].ToString() + Session["usuario"].ToString() + Session["sistema"].ToString();

     

                Conn.Close();

     

            }

            catch (Exception ex)

            {

     

                lbResultado.Text = ex.Message;

                //lbResultado.Text = ex.Message + " - " + ex.StackTrace;

     

            }

    jueves, 1 de abril de 2010 19:03
    Moderador

Todas las respuestas

  • hola

    lo qeu sucede es que al SqlCommand no le has asignado el objeto SqlConnection

    prueba gregando

    cmd.Connection = Conn;

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Propuesto como respuesta Carlos Baez martes, 10 de mayo de 2011 21:03
    jueves, 1 de abril de 2010 18:50

  • ademas el codigo que has puesto podrias tomar esta forma

    protected void btEntrar_Click(object sender, EventArgs e)
    {
        try
        {

            string stConn = "server=secserver;database=intranet;UID=sa;PWD=Adm_123456";

            using(SqlConnection Conn = new SqlConnection(stConn))
            {
                Conn.Open();

                string sqlQuery = @"SELECT iu.nm_user, iu.fk_id_centro_respons,
                                        iu.fk_cd_filial, iu.fk_chapa, iu.ativo,
                                        pa.fk_id_sistema, prf.sg_perfil
                                    FROM INTRANET_USERS iu, INTRANET_PERFIL_ACESSO pa,
                                    INTRANET_PERFIL prf
                                    WHERE iu.fk_chapa = @chapa AND iu.fk_chapa = pa.fk_chapa
                                    AND pa.fk_id_sistema = 6
                                    AND pa.fk_id_perfil = prf.id_perfil and iu.fk_cd_filial = 1";

                SqlCommand cmd = new SqlCommand(sqlQuery, Conn);
               
                cmd.Parameters.Add("@chapa", this.txtUser.Text);
                cmd.Parameters.Add("@usuario", this.txtUser.Text);
                cmd.Parameters.Add("@senha", this.txtSenha.Text);
                cmd.Parameters.Add("@id_sistema", this.Session["sistema"]);

                SqlDataReader dr = cmd.ExecuteReader();

                if(dr.Read())
                {
                    Session["chapa"] = dr["fk_chapa"].ToString();
                    Session["usuario"] = dr["fk_chapa"].ToString();
                    Session["setor"] = dr["fk_id_centro_respons"].ToString();
                    Session["sistema"] = Convert.ToInt32(dr["fk_id_sistema"]);
                    Session["senha"] = dr["senha"].ToString();

                    lbResultado.Text = string.Format("{0}{1}{2}", Session["chapa"], Session["usuario"], Session["sistema"]);
                }
            }
        }
        catch (Exception ex)
        {
            lbResultado.Text = ex.Message;
        }

    }

    analzialo creo que queda algo mas prolijo

     

    con el using evitas tener que usar el close() de lso objetos, ya que este se encarga de destruir la conexion

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 1 de abril de 2010 18:56
  • Saludo ,

     

    Ejecuta este script  , 

     string stConn = "server=secserver;database=intranet;UID=sa;PWD=Adm_123456";

                string sqlQuery = "SELECT iu.nm_user, iu.fk_id_centro_respons, iu.fk_cd_filial, iu.fk_chapa, iu.ativo, pa.fk_id_sistema, prf.sg_perfil FROM INTRANET_USERS iu, INTRANET_PERFIL_ACESSO pa, INTRANET_PERFIL prf WHERE iu.fk_chapa = @chapa AND iu.fk_chapa = pa.fk_chapa AND pa.fk_id_sistema = 6 AND pa.fk_id_perfil = prf.id_perfil and iu.fk_cd_filial = 1";

     

                SqlConnection Conn = new SqlConnection(stConn);

     

                SqlCommand cmd = new SqlCommand(sqlQuery, stConn);//El error estaba aqui tiens que indicarle los parametro [sqlQuery,stConn]

                cmd.CommandType = System.Data.CommandType.Text;

     

     

                cmd.Parameters.Add("@chapa", this.txtUser.Text);

                cmd.Parameters.Add("@usuario", this.txtUser.Text);

                cmd.Parameters.Add("@senha", this.txtSenha.Text);

                cmd.Parameters.Add("@id_sistema", this.Session["sistema"]);

     

     

                Conn.Open();

     

                SqlDataReader dr = cmd.ExecuteReader();

     

     

                dr.Read();

     

                chapa = dr["fk_chapa"].ToString();

                usuario = dr["fk_chapa"].ToString();

                setor = dr["fk_id_centro_respons"].ToString();

                sistema = Convert.ToInt32(dr["fk_id_sistema"]);

                senha = dr["senha"].ToString();

                //perfil = dr["fk_id_perfil"].ToString();

     

     

                Session["chapa"] = chapa;

                Session["usuario"] = usuario;

                Session["setor"] = setor;

                Session["sistema"] = sistema;

                Session["senha"] = senha;

                //Session["perfil"] = perfil;

     

     

                //string chapa = Convert.ToString(Session["chapa"]);

                //string usuario = Convert.ToString(Session["usuario"]);

                //int sistema = Convert.ToInt32(Session["id_sistema"]);

     

                lbResultado.Text = Session["chapa"].ToString() + Session["usuario"].ToString() + Session["sistema"].ToString();

     

                Conn.Close();

     

            }

            catch (Exception ex)

            {

     

                lbResultado.Text = ex.Message;

                //lbResultado.Text = ex.Message + " - " + ex.StackTrace;

     

            }

    jueves, 1 de abril de 2010 19:03
    Moderador
  • Gracias, Leandro por contestar mi pregunta;

    He hecho un teste y ya no me ocurre mas aquel error.

    Tanto su code cm el de Enmanuel me brndaran la solución.

    Puesto que estoy entre maestros y expertos ¿que sugerencia tienes para que yo pueda mejorar mis consultas SQL y la construcion de ellças en C#?

    Que te vayas bien.

    ¡Saludos a tu família y que Dios los bendiga!

    jueves, 1 de abril de 2010 20:42
  • Gracias, Enmanuel por contestar mi pregunta;

    He hecho un teste y ya no me ocurre mas aquel error.

    Tanto su code cm el de Leandro me brndaran la solución.

    Puesto que estoy entre maestros y expertos ¿que sugerencia tienes para que yo pueda mejorar mis consultas SQL y la construcion de ellças en C#?

    Que te vayas bien.

    ¡Saludos a tu família y que Dios los bendiga!

    jueves, 1 de abril de 2010 20:42
  • Hey, amen hermano, mire lo primero es que tu arquitectura debe mejorar, no es bueno meterle todo ese codigo a un control, busca en la web la arquitectura 3 capas en c#, y lo segundo es que sigas leyendo y haciendo preguntas. Blessing.
    sábado, 19 de junio de 2010 18:16
  • ¡Gracias por la atención! He visto q necesito mejorar por utilizar el enfoque de OOP y camadas. Hay alguna sugerencia?

    ¡Saludos!

    jueves, 24 de junio de 2010 14:48