none
ExecuteNonQuery: la propiedad Connection no se ha inicializado. RRS feed

  • Pregunta

  • Estoy realizando mi conexion con una base datos de servicio y me manda error ExecuteNonQuery: la propiedad Connection no se ha inicializado.

    espero alguien me pueda ayudar 

    class ConexionBD
        {
            SqlConnection MiConexion;

            public void Conectar()
            {
                MiConexion = new SqlConnection(Properties.Settings.Default.ConexionBD);
                MiConexion.Open();
            }

            public void Desconectar()
            {
                MiConexion.Close();
            }

            public void EjecutarSql(String Query)
            {
                SqlCommand MiComando = new SqlCommand(Query, MiConexion);
                MiComando.ExecuteNonQuery();
            }
        }

    y aqui inserto mis datos:

    ConexionBD Insertar = new ConexionBD();
                if (checkV.Checked == true)
                {
                    String Query1 = "INSERT INTO General (TipoConstruccion,Forma,TipoCemento,Resistencia,Lado-a,Lado-b,Lado-h,Lado_A,Lado_B,Volumen,Elementos,VolumenporElemento,Cemento,Arena,Grava,Agua,Descripcion) VALUES ('" + tipoConst + "','" + forma + "','" + "NA" + "'," + resistencia + "," + lado_a + "," + lado_b + "," + lado_h + "," + lado_A + "," + lado_B + "," + volumen + "," + elem + ",'" + 10 + "','" + cemento1 + "','" + arena1 + "','" + grava1 + "','" + agua1 + "','" + descripcion + "');";
                    Insertar.EjecutarSql(Query1);
                }

    jueves, 30 de julio de 2015 18:53

Respuestas

  •  el problema es que nunca conectas a la base de datos... tienes el método "conectar()" pero no lo llamas...

    ConexionBD Insertar = new ConexionBD();
                if (checkV.Checked == true)
                {
    
                    String Query1 = "INSERT INTO General (TipoConstruccion,Forma,TipoCemento,Resistencia,Lado-a,Lado-b,Lado-h,Lado_A,Lado_B,Volumen,Elementos,VolumenporElemento,Cemento,Arena,Grava,Agua,Descripcion) VALUES ('" + tipoConst + "','" + forma + "','" + "NA" + "'," + resistencia + "," + lado_a + "," + lado_b + "," + lado_h + "," + lado_A + "," + lado_B + "," + volumen + "," + elem + ",'" + 10 + "','" + cemento1 + "','" + arena1 + "','" + grava1 + "','" + agua1 + "','" + descripcion + "');";
                    Insertar.conectar();
                    Insertar.EjecutarSql(Query1);
                    Insertar.desconectar();
                }

    o bien conectar dentro del metodo ejecutarSQL.

     public void EjecutarSql(String Query)
            {
                conectar();
                SqlCommand MiComando = new SqlCommand(Query, MiConexion);
                MiComando.ExecuteNonQuery();
                desconectar();
            }


    Saludos,
    Lucas Petruzzella


    jueves, 30 de julio de 2015 19:02

Todas las respuestas

  • Hola DanielCruz93,

    1. Yo no veo en el código que nos compartes que la variable MiConexión haya sido instanciada.
    2. Deberías colocarlo en el constructor de la clase
    3. Debes de usar parámetros.
    class ConexionBD
        {
            SqlConnection MiConexion;
    
            public ConexionBD()
            {
                MiConexion = new SqlConnection(Properties.Settings.Default.ConexionBD);
                MiConexion.Open();
            }
    
            public void Desconectar()
            {
                MiConexion.Close();
            }
    
            public void EjecutarSql(String Query)
            {
                SqlCommand MiComando = new SqlCommand(Query, MiConexion);
                MiComando.ExecuteNonQuery();
            }
        }

    Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.

    Willams Morales
    Arequipa - PERÚ

    jueves, 30 de julio de 2015 19:00
  •  el problema es que nunca conectas a la base de datos... tienes el método "conectar()" pero no lo llamas...

    ConexionBD Insertar = new ConexionBD();
                if (checkV.Checked == true)
                {
    
                    String Query1 = "INSERT INTO General (TipoConstruccion,Forma,TipoCemento,Resistencia,Lado-a,Lado-b,Lado-h,Lado_A,Lado_B,Volumen,Elementos,VolumenporElemento,Cemento,Arena,Grava,Agua,Descripcion) VALUES ('" + tipoConst + "','" + forma + "','" + "NA" + "'," + resistencia + "," + lado_a + "," + lado_b + "," + lado_h + "," + lado_A + "," + lado_B + "," + volumen + "," + elem + ",'" + 10 + "','" + cemento1 + "','" + arena1 + "','" + grava1 + "','" + agua1 + "','" + descripcion + "');";
                    Insertar.conectar();
                    Insertar.EjecutarSql(Query1);
                    Insertar.desconectar();
                }

    o bien conectar dentro del metodo ejecutarSQL.

     public void EjecutarSql(String Query)
            {
                conectar();
                SqlCommand MiComando = new SqlCommand(Query, MiConexion);
                MiComando.ExecuteNonQuery();
                desconectar();
            }


    Saludos,
    Lucas Petruzzella


    jueves, 30 de julio de 2015 19:02
  • Por otro lado,

    Acostumbrate a usar parámetros en tus consultas

    using (SqlConnection cn = New SqlConnection(Properties.Settings.Default.ConexionBD))
    {
      cn.Open();
    
      string sql = @"INSERT INTO General
        (TipoConstruccion, Forma, TipoCemento, Resistencia, Lado-a, Lado-b,Lado-h, Lado_A, Lado_B, Volumen, Elementos, VolumenporElemento, Cemento, Arena, Grava, Agua, Descripcion) 
        VALUES (@TipoConstruccion, @Forma, @TipoCemento, @Resistencia, @Lado-a, @Lado-b, @Lado-h, @Lado_A, @Lado_B, @Volumen, @Elementos, @VolumenporElemento, @Cemento, @Arena, @Grava, @Agua, @Descripcion)";
    
      SqlCommand cmd = new SqlCommand(sql, cn)
    
      cmd.Parameters.AddWithValue("@TipoConstruccion", tipoConst);
      cmd.Parameters.AddWithValue("@Forma", forma);
      /*Agregar todos los parámetros a la colección Parameters*/
    
      cmd.ExecuteNonQuery();
    }
    
    



    Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.

    Willams Morales
    Arequipa - PERÚ

    jueves, 30 de julio de 2015 19:06
  • gracias era la conexion que no la realizaba
    jueves, 30 de julio de 2015 21:59