0

recientemente estoy entrando a esta parte de desarrollo web con Java y tengo un problema con un ejercicio que he creado, no sé a que se deba. Lo he chequeado todo y no encuentro el error. Aquí el código:

En la base de datos:

create database tienda
create table articulos(
id int primary key auto_increment,
nombre varchar(35),
cantidad int,
categoria varchar(35)
)

DELIMITER $
create procedure reg_pro(IN nombre varchar(35),IN cantidad int,IN categoria 
varchar(35))
begin 
    insert into articulos(nombre,cantidad,categoria)
    values(nombre,cantidad,categoria);
end $

El formulario de entrada:

<form action="acciones.jsp"> <table border="1"> <tr> <td>Nombre</td> <td><input type="text" name="txtNombre"></td> </tr> <tr> <td>Cantidad</td> <td><input type="text" name="txtCantidad"></td> </tr> <tr> <td>Categoria</td> <td><input type="text" name="txtCategoria"></td> </tr> <tr> <td><input type="submit" value="Registrar"></td> <td><input type="reset" value="Limpiar"></td> </tr> </table> </form>

El formulario envía la información a acciones donde tengo: (si he importado la clase Libreria de otro paquete)

<body>
    <h1>Registrando Producto</h1>
    <%
        Libreria l=new Libreria();
        String nom=request.getParameter("txtNombre");
        int can=Integer.parseInt(request.getParameter("txtCantidad"));
        String cat=request.getParameter("txtCategoria");
        l.inserta(nom,can,cat);
    %>
</body>

para que finalmente llame al método inserta de Libreria y es donde me marca que recibe datos vacíos:

public class Libreria {
private Connection cnx;
String driver="com.mysql.jdbc.Driver";
String cadena="jdbc:mysql://localhost/tienda";
String usuario="root";
String clave="";
public Libreria(){
    try{
        Class.forName(driver);
        cnx=DriverManager.getConnection(cadena,usuario,clave);
    }catch(ClassNotFoundException e1){
    }catch(SQLException e2){
    }
}
public void inserta(String nombre, int cantidad, String categoria){
    try{
        CallableStatement sen=cnx.prepareCall("CALL reg_pro(?,?,?)");
        sen.setString("nombre",nombre);
        sen.setInt("cantidad",cantidad);
        sen.setString("categoria",categoria);
        sen.execute();
    }catch(Exception e3){
        JOptionPane.showMessageDialog(null,e3);
    }
}

Sé que parece muy extenso pero agradecería la ayuda de quien me apoye, gracias :). link para descargar mi proyecto: https://drive.google.com/drive/folders/1tiVwS66S2V_pcN9IUERFRbQ8j2KlAQfq?usp=sharing

  • Posible duplicado de [¿Cuál es la solución a todos los errores NullPointerException presentes, pasados y futuros?](https://es.stackoverflow.com/questions/42977/cu%c3%a1l-es-la-soluci%c3%b3n-a-todos-los-errores-nullpointerexception-presentes-pasados) –  Mar 17 '19 at 04:14

1 Answers1

0

En el empleo de los metodos setString y setInt, deberias modificar los argumentos de esta forma:

    sen.setString(1,nombre);
    sen.setInt(2,cantidad);
    sen.setString(3,categoria);

En donde 1, 2 y 3 especifican el primer, segundo y tercer parametro de la consulta SQL

L3WIS
  • 96
  • 2