Hola a todos
Tengo una pagina jsqp que usa un beans para manipular datos en mysql mediante el conector oficial de mysql para java, la cuestion es que el select lo realiza correctamente pero cuando intento un insert o update me lanza
java.lang.NullPointerException justo en la linea en la que lanzo la sql
El codigo es llamado desde la pagina jsp accediendo mediante un beans de la siguiente forma.
Código:
prod.insertarProducto(prod.getNombre(),prod.getPrecio());
Código:
public String insertarProducto(String nombre, float precio) throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException {
int r;
String sql = "INSERT INTO productos (id_producto, nombre, precio) VALUES (NULL, '" + nombre + "', '" + precio + "')";
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
this.conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/catalogo", "root", "pruebas");
r = this.s.executeUpdate(sql);
} catch (Exception e) {
return ("<p id=\"error\">Error: " + e + sql + "</p>");
}
this.rs.close();
this.s.close();
this.conn.close();
return (sql);
}
Bueno despues de mucho google encuentro que hay que prepara la sql con un metodo de java sin embargo no se como indicar en dicho metodo que el primer campo es un campo autonumerico incremental
Código java:
Ver original
int r;
String sql
= "INSERT INTO productos (id_producto, nombre, precio) VALUES (NULL, ?, ?)";
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
this.
conn = java.
sql.
DriverManager.
getConnection("jdbc:mysql://localhost/catalogo",
"root",
"pruebas");
this.stmt = conn.prepareStatement(sql);
this.stmt.setString(1, nombre);
this.stmt.setFloat(2, precio);
r = this.stmt.executeUpdate();
return ("<p id=\"error\">Error: " + e + sql + "</p>");
}
this.stmt.close();
this.rs.close();
this.s.close();
this.conn.close();
return (sql);
}