none
INSERTAR DATOS DE C# A SQL RRS feed

  • Pregunta

  • Buenas, necesito ayuda en código c#, realicé el código para insertar datos de un formulario para que se registren en la base de datos, pero me sale una excepción en  int filasafectadas = cmd.ExecuteNonQuery(); mi tabla tiene 5 columnas,   alguien que me pueda ayudar por favor, se lo agradezco de antemano.

     public bool Insertar(string id, string nombre , string categoria, string precio, string cantidad)
            {
                conexion.Open();
                SqlCommand cmd = new SqlCommand(string.Format("insert into electrodomesticos values ('{0}', '{1}', {2}, {3})", new string[] { id, nombre, categoria, precio, cantidad }), conexion);
                int filasafectadas = cmd.ExecuteNonQuery();
                conexion.Close();
                if (filasafectadas > 0) return true;
                else return false;        
            }

     

    henry

    lunes, 19 de noviembre de 2018 0:11

Respuestas

  • Tu función debería quedar así:

    public bool Insertar(string id, string nombre, string categoria, string precio, string cantidad)
            {
                conexion.Open();
    
                String Sql = "INSERT INTO electrodomesticos(campos de la tabla) VALUES(@c1, @c2, @c3, @c4, @c5);";
    
                using (cmd = new SqlCommand(Sql, Conexion))
                {
    
                    cmd.Parameters.AddWithValue("@c1", id);
    
                    cmd.Parameters.AddWithValue("@c2", nombre);
    
                    cmd.Parameters.AddWithValue("@c3", categoria);
    
                    cmd.Parameters.AddWithValue("@c4", precio);
    
                    cmd.Parameters.AddWithValue("@c5", cantidad);
    
                    int filasafectadas = cmd.ExecuteNonQuery();
    
                    if (filasafectadas > 0) return true;
                    else return false;
                }
            }
    En campos de la tabla, tienes que especificar los campos que van a ser insertados de esa tabla para que funcione adecuadamente.


    Antonio Mata



    lunes, 19 de noviembre de 2018 3:19

Todas las respuestas

  • Los parámetros nunca se pasan de esa forma.

    Intenta con esto:

    String Sql = "INSERT INTO tu_tabla (campo1, campo2, campo3, campo4) VALUES(@c1, @c2, @c3, @c4);";
    
                        using (cmd = new SqlCommand(Sql, TuConexionSQL))
                        {
                            cmd.Parameters.AddWithValue("@c1", campo1);
    
                            cmd.Parameters.AddWithValue("@c2", campo2);
    
                            cmd.Parameters.AddWithValue("@c3", campo3);
    
                            cmd.Parameters.AddWithValue("@c4", campo4);
    
                            result = cmd.ExecuteNonQuery();
                        }



    Antonio Mata

    lunes, 19 de noviembre de 2018 1:40
  • Con TuConexionSQL a qué se refiere? a esto: "Data Source=HENRYFO; Initial Catalog = electro; Integrated Security = true" ? si no es, deme un ejemplo, ya que recién estoy empezando en este mundo de la programación, sería muy amable de su parte.

    henry

    lunes, 19 de noviembre de 2018 2:47
  • Con "TuConexionSQL" me refiero a tu variable donde almacenas tu cadena de conexión sql. En tu caso sería la variable Conexion, que aparece en tu bloque de código anterior.

    Antonio Mata

    • Marcado como respuesta HenryFo martes, 20 de noviembre de 2018 4:39
    • Desmarcado como respuesta HenryFo martes, 20 de noviembre de 2018 4:39
    lunes, 19 de noviembre de 2018 3:00
  • ah ya entendí, ahora lo que pasa es que me sale subrayado en rojo en los cmd con los parametros y el result, cómo podría corregir eso? 

    henry


    • Editado HenryFo lunes, 19 de noviembre de 2018 3:09
    lunes, 19 de noviembre de 2018 3:08
  • Tu función debería quedar así:

    public bool Insertar(string id, string nombre, string categoria, string precio, string cantidad)
            {
                conexion.Open();
    
                String Sql = "INSERT INTO electrodomesticos(campos de la tabla) VALUES(@c1, @c2, @c3, @c4, @c5);";
    
                using (cmd = new SqlCommand(Sql, Conexion))
                {
    
                    cmd.Parameters.AddWithValue("@c1", id);
    
                    cmd.Parameters.AddWithValue("@c2", nombre);
    
                    cmd.Parameters.AddWithValue("@c3", categoria);
    
                    cmd.Parameters.AddWithValue("@c4", precio);
    
                    cmd.Parameters.AddWithValue("@c5", cantidad);
    
                    int filasafectadas = cmd.ExecuteNonQuery();
    
                    if (filasafectadas > 0) return true;
                    else return false;
                }
            }
    En campos de la tabla, tienes que especificar los campos que van a ser insertados de esa tabla para que funcione adecuadamente.


    Antonio Mata



    lunes, 19 de noviembre de 2018 3:19
  • LISTO! ahora sí me funciona, muchas gracias Antonio, éxitos amigo! 

    henry

    lunes, 19 de noviembre de 2018 3:25
  • De nada. :-)

    No te olvides marcar como respuesta si solucionó tu problema. 

    Saludos. :-)!


    Antonio Mata

    lunes, 19 de noviembre de 2018 3:27