none
Error en Conversión de Int A String-- RRS feed

  • Pregunta

  • Buenas tardes a tod@s, tengo una duda, estoy practicando creando una aplicación web, específicamente un inventario para una tienda de cómics, tengo mi primera sección que es agregar stock al momento de querer registrar los datos del producto, me sale el error de que vuelva a ingresar los datos..

    anterior a eso me había salido un error de conversión en la variable de Cantidad no sé si aún ese sería el error pero ya no supe como arreglarlo, alguna manera de explicarme de cómo podría arreglarlo? Gracias 

    

    Tengo una clase con un método agregar producto:

      public static string AGREGAR_PRODUCTO(byte[] picbyte, string desc_,string nombre_, string categr, double precio_, int cantidad_)
    {
    string MENSAJE;
    SqlParameter picparameter = new SqlParameter();
    picparameter.SqlDbType = SqlDbType.Image;
    picparameter.ParameterName = "pic";
    picparameter.Value = picbyte;
    SqlConnection CONEX = new SqlConnection("Data Source='DESKTOP-6IBLP9C\\SQLEXPRESS';initial catalog= Tienda_Comics;integrated Security=true");
    try
    {
    CONEX.Open();
    SqlCommand cmStock = new SqlCommand();
    cmStock.Connection = CONEX;
    cmStock.CommandType = CommandType.Text;
    string query =
    "INSERT INTO Productos(NOMBRE,CATEGORIA,DESCRIPCION,IMAGEN,PRECIO,CANTIDAD)VALUES ('"+ nombre_ + "','" + categr + "','" + desc_ +"', @pic ,'" + Convert.ToString(precio_) + Convert.ToString(cantidad_)+ "')";
    SqlCommand cmd = new SqlCommand(query, CONEX);
    cmd.Parameters.Add(picparameter);
    cmd.ExecuteNonQuery();
    CONEX.Close();
    MENSAJE = "PRODUCTO REGISTRADO";
    }
    catch
    {
    MENSAJE = "ERROR VUELVA A INTRODUCIR DATOS";
    }
    return MENSAJE;
    }

    y el form :

    Gracias buen día.

    lunes, 2 de septiembre de 2019 18:17

Respuestas

  • hola

    El problema que tienes es que no usas parametros, no se concatena los valores en el string

    CONEX.Open();
    
    string query = @"INSERT INTO Productos(NOMBRE,CATEGORIA,DESCRIPCION,IMAGEN,PRECIO,CANTIDAD) 
    				VALUES (@nombre, @categr, @desc, @pic, @precio, @cantidad)";
    SqlCommand cmd = new SqlCommand(query, CONEX);
    
    cmd.Parameters.AddWithValue("@nombre", nombre_);
    cmd.Parameters.AddWithValue("@categr", categr);
    cmd.Parameters.AddWithValue("@desc", desc_);
    cmd.Parameters.AddWithValue("pic", picbyte);
    cmd.Parameters.AddWithValue("@precio", precio_);
    cmd.Parameters.AddWithValue("@cantidad", cantidad_);
    
    cmd.ExecuteNonQuery();
    
    CONEX.Close();

    no solo la imagen se asigna por parametro, todos los valores deben ser igual

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Pablo RubioModerator jueves, 5 de septiembre de 2019 17:16
    • Marcado como respuesta TDarkSwan domingo, 8 de septiembre de 2019 23:03
    lunes, 2 de septiembre de 2019 19:41

Todas las respuestas

  • Hola, primero...nunca hagas esto

    "INSERT INTO Productos(NOMBRE,CATEGORIA,DESCRIPCION,IMAGEN,PRECIO,CANTIDAD)VALUES ('"+ nombre_ + "','" + categr + "','" + desc_ +"', @pic ,'" + Convert.ToString(precio_) + Convert.ToString(cantidad_)+ "')";

    deberías hacerlo así.

    //TE PONGO UN EJEMPLO MIO.
    public int IngresaProblema(string usuario, string rut, string fecha, string titulo, string detalle)
            {
                int res = 0;
                SqlCommand ins = conectar.Comando();
                ins.CommandText = "INSERT INTO MI_TABLA VALUES (@usuario, @rut, @fecha, @titulo, @detalle)";
                ins.Parameters.AddWithValue("@usuario", usuario);
                ins.Parameters.AddWithValue("@rut", rut);
                ins.Parameters.AddWithValue("@fecha", fecha);
                ins.Parameters.AddWithValue("@titulo", titulo);
                ins.Parameters.AddWithValue("@detalle", detalle);
                conectar.Abrir();
                res = ins.ExecuteNonQuery();
                conectar.Cerrar();
                return res;
            }

    segundo, por qué no pones un punto de interrupción y vas recorriendo el programa línea a línea? así sabrás donde está el error y cual es el detalle del error en cuestión....

    lunes, 2 de septiembre de 2019 19:34
  • hola

    El problema que tienes es que no usas parametros, no se concatena los valores en el string

    CONEX.Open();
    
    string query = @"INSERT INTO Productos(NOMBRE,CATEGORIA,DESCRIPCION,IMAGEN,PRECIO,CANTIDAD) 
    				VALUES (@nombre, @categr, @desc, @pic, @precio, @cantidad)";
    SqlCommand cmd = new SqlCommand(query, CONEX);
    
    cmd.Parameters.AddWithValue("@nombre", nombre_);
    cmd.Parameters.AddWithValue("@categr", categr);
    cmd.Parameters.AddWithValue("@desc", desc_);
    cmd.Parameters.AddWithValue("pic", picbyte);
    cmd.Parameters.AddWithValue("@precio", precio_);
    cmd.Parameters.AddWithValue("@cantidad", cantidad_);
    
    cmd.ExecuteNonQuery();
    
    CONEX.Close();

    no solo la imagen se asigna por parametro, todos los valores deben ser igual

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Pablo RubioModerator jueves, 5 de septiembre de 2019 17:16
    • Marcado como respuesta TDarkSwan domingo, 8 de septiembre de 2019 23:03
    lunes, 2 de septiembre de 2019 19:41