Tengo un formulario html con inputs numéricos declarados como type="number", los cuales deberían dar hasta dos decimales, y en la base de datos los declaré como double. En la clase que toma los parámetros de Statement también los declaré como double.
Mis dos preguntas son la siguientes:
a) cómo tengo que declarar los input numericos en el formulario html donde dice type para que la insercción sea exitosa y con dos decimales?, porque la consulta si no me equivoco está bien formulada.
b) Cómo tengo que declarar los campos en la tabla mysql para que tenga sólo tenga dos decimales? probé float y tampoco se insertaron los datos.
Me pinta que es una incompatibilidad entre el form html type="number", lo declarado en la variables "double" y lo declarado en la estructura mysql columnas "double".
Clase declaradora de Empleado: package org.comunidadIT.proyecto.entidades;
public class Empleado {
protected String nombre;
protected String apellido;
protected String direccion;
protected String cargo;
protected double sueldo_cargo;
protected double cargas_sociales;
protected double vacaciones;
protected double sueldo_neto;
public Empleado (String nombre, String apellido, String direccion, String cargo, double sueldo_cargo, double cargas_sociales, double vacaciones, double sueldo_neto){
this.nombre=nombre;
this.apellido=apellido;
this.direccion=direccion;
this.cargo=cargo;
this.sueldo_cargo=sueldo_cargo;
this.cargas_sociales=cargas_sociales;
this.vacaciones=vacaciones;
this.sueldo_neto=sueldo_neto;
}
Formulario html:
<form action="http://localhost:8091/Proyecto_Final_AAB/rest/empleados/insertarEmpleado" method="post" >
<table>
<tr>
<td>
<label name="nombre">Nombre:</label>
</td>
</tr>
<tr>
<td>
<input name="nombre" type="text"><br/>
</td>
</tr>
<tr>
<td>
<label name="apellido">Apellido:</label>
</td>
</tr>
<tr>
<td>
<input name="apellido" type="text"><br/>
</td>
</tr>
<tr>
<td>
<label name="direccion">Direccion:</label>
</td>
</tr>
<tr>
<td>
<input name="direccion" type="text"><br/>
</td>
</tr>
<tr>
<td>
<label name="cargo">Cargo en la Empresa:</label>
</td>
</tr>
<tr>
<td>
<input name="cargo" type="text"><br/>
</td>
</tr>
<tr>
<td>
<label name="sueldo_cargo">Sueldo bruto:</label>
</td>
</tr>
<tr>
<td>
<input name="sueldo_cargo" type="number"><br/>
</td>
</tr>
<tr>
<td>
<label name="cargas_sociales">Cargas sociales:</label>
</td>
</tr>
<tr>
<td>
<input name="cargas_sociales" type="number"><br/>
</td>
</tr>
<tr>
<td>
<label name="vacaciones">Vacaciones:</label>
</td>
</tr>
<tr>
<td>
<input name="vacaciones" type="number"><br/>
</td>
</tr>
<tr>
<td>
<tr>
<td>
<label name="sueldo_neto">Sueldo neto:</label>
</td>
</tr>
<tr>
<td>
<input name="sueldo_neto" type="number"><br/>
</td>
</tr>
<tr>
<td>
<input type="submit" value="Insertar">
</td>
</tr>
</table>
</form>
Clase rest que inserta datos:
package org.comunidadIT.proyecto.controladores;
import javax.ws.rs.PathParam;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import org.comunidadIT.proyecto.accesoDatos.ConexionAeropuerto;
import org.comunidadIT.proyecto.entidades.Administrador;
import org.comunidadIT.proyecto.entidades.Empleado;
import com.google.gson.Gson;
@Path("/empleados")
public class Empleados {
String numerosLetras= new String("[^a-zA-Z0-9]+");
String soloLetras= new String("[^a-zA-Z]+");
String soloEmail= new String("[^a-zA-Z0-9@._-]");
@POST
@Path("/insertarEmpleado")
@Produces(MediaType.APPLICATION_JSON)
public String insertarEmpleado(@FormParam("nombre") String nombre, @FormParam("apellido") String apellido, @FormParam("direccion") String direccion, @FormParam("cargo") String cargo, @FormParam("sueldo_cargo") double sueldo_cargo, @FormParam("cargas_sociales") double cargas_sociales, @FormParam("vacaciones") double vacaciones, @FormParam("sueldo_neto") double sueldo_neto){
try
{
//Probamos conectarnos
ConexionAeropuerto c= new ConexionAeropuerto();
Connection con= c.connectarAhora();
//Si la conexión no es nula entonces realizar dos consultaa de insercción de datos y creación de tabla
if(con!=null)
{
Statement st;
st=con.createStatement();
st.executeUpdate("INSERT INTO empleados_berlot83(nombre,apellido,direccion,cargo,sueldo_cargo,cargas_sociales,vacaciones,sueldo_neto) VALUES('"+nombre.trim().replaceAll(soloLetras, "")+"','"+apellido.trim().replaceAll(soloLetras, "")+"','"+direccion.trim().replaceAll(numerosLetras, "")+"','"+cargo.trim().replaceAll(numerosLetras, "")+"','"+sueldo_cargo+"','"+cargas_sociales+"','"+vacaciones+"','"+"','"+sueldo_neto+"')");
st.close();
System.out.println("Funciona el try and catch, los deberían haberse ingresado a la DB 'empleados_berlot83'");
MetodosResponse.CREADO(); //ResponseBuilder 200
}
else
{
System.out.println("Algo Salió mal no se pudo insertar los datos");
MetodosResponse.UNAUTHORIZED(); //ResponseBuilder 401
}
}
catch (SQLException e)
{
e.printStackTrace();
}
//Creamos la lista y le ponemos las variables que a su vez están conectadas al construcctor de la Case Empleados
List<Empleado> lista= new ArrayList<>();
lista.add(new Empleado(nombre.trim().replaceAll(soloLetras, ""), apellido.trim().replaceAll(soloLetras, ""), direccion.trim().replaceAll(numerosLetras, ""), cargo.trim().replaceAll(numerosLetras, ""), sueldo_cargo, cargas_sociales, vacaciones, sueldo_neto ));
//Creamos un object Gson() que nos permite usar el toJson()
Gson gson = new Gson();
//Creamos un String y al mismo le aplicamos el toJson(objeto list)
String JsonToString= gson.toJson(lista);
//Retornamos el String anterior
return JsonToString;
}
}