Error inserting it

-1

The procedure or function 'Insert Product' expected the parameter '@Name'

private static int ejecutaNonQuery (string StoredProcedure, List<DbParameter> parametros)
    {
        int Id = 0;
        try
        {
            using (DbConnection con = dpf.CreateConnection())
            {
                con.ConnectionString = constr;
                using (DbCommand cmd = dpf.CreateCommand())
                {
                    cmd.Connection = con;
                    cmd.CommandText = StoredProcedure;
                    cmd.CommandType = CommandType.StoredProcedure;

                    foreach (DbParameter param in parametros)
                        cmd.Parameters.Add(param);
                    con.Open();
                    Id = cmd.ExecuteNonQuery();
                }
            }
        }
        catch(Exception ex)
        {
            throw;
        }
        finally
        {
            // connection.close();
        }
        return Id;
    }

    public int InsertProducto(string Nombre, int Cantidad)
    {
        List<DbParameter> parametros = new List<DbParameter>(); 

        DbParameter param = dpf.CreateParameter();
        param.Value = Nombre;
        param.ParameterName = "Nombre";
        parametros.Add(param);

        DbParameter param1 = dpf.CreateParameter();
        param.Value = Cantidad;
        param.ParameterName = "Cantidad";
        parametros.Add(param1);

        return ejecutaNonQuery("InsertarProducto", parametros);

    }
    
asked by Jair Paredes 12.11.2018 в 15:25
source

1 answer

0

The problem is that the names of the parameters start with @, and you're not going through it.

Try this:

private static int ejecutaNonQuery (string StoredProcedure, List<DbParameter> parametros)
    {
        int Id = 0;
        try
        {
            using (DbConnection con = dpf.CreateConnection())
            {
                con.ConnectionString = constr;
                using (DbCommand cmd = dpf.CreateCommand())
                {
                    cmd.Connection = con;
                    cmd.CommandText = StoredProcedure;
                    cmd.CommandType = CommandType.StoredProcedure;

                    foreach (DbParameter param in parametros)
                        cmd.Parameters.Add(param);
                    con.Open();
                    Id = cmd.ExecuteNonQuery();
                }
            }
        }
        catch(Exception ex)
        {
            throw;
        }
        finally
        {
            // connection.close();
        }
        return Id;
    }

    public int InsertProducto(string Nombre, int Cantidad)
    {
        List<DbParameter> parametros = new List<DbParameter>(); 

        DbParameter param = dpf.CreateParameter();
        param.Value = Nombre;
        param.ParameterName = "@Nombre";
        parametros.Add(param);

        DbParameter param1 = dpf.CreateParameter();
        param.Value = Cantidad;
        param.ParameterName = "@Cantidad";
        parametros.Add(param1);

        return ejecutaNonQuery("InsertarProducto", parametros);

    }
}

Good luck!

    
answered by 12.11.2018 в 15:29