Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > BigDecimal y Mysql

como hacer un insert en una tabla Mysql, el campo donde voy a insertar esta definido como decimal(11,2) y mis variables en java las defino de la siguiente manera:
BigDecimal precio = new BigDecimal("1265");

junio 8, 2012 | Registered Commenterdmorales

El prepared statement de sql tiene un método setBigDecimal.

http://download.java.net/jdk7/archive/b123/docs/api/java/sql/PreparedStatement.html#setBigDecimal(int, java.math.BigDecimal)

junio 9, 2012 | Registered Commenterchoces

si, en realidad trabajo con statement y todo mi codigo esta de esa forma. LLego hasta mi clase de persistencia de la siguiente manera:

public boolean crearLineaPedido(LineaPedido unaLineaPedido) {
boolean guardar;
guardar = false;
Connection con;
Statement st;

try {
con = DriverManager.getConnection(url, login, password);
st = con.createStatement();
int idLineaPedido = unaLineaPedido.getIdLineaPedido();
int idPedido = unaLineaPedido.getIdPedido();
String nombreProductoLineaPedido = "'" + unaLineaPedido.getNombreProductoLineaPedido() + "'";
int cantidadProductoLineaPedido = unaLineaPedido.getCantidadProductoLineaPedido();
// BigDecimal precioProductoLineaPedido = new BigDecimal("'" + unaLineaPedido.getPrecioProductoLineaPedido() + "'");
String precio = unaLineaPedido.getPrecioProductoLineaPedido().toString();

String precio2 = "'" + precio + "'";
//String precioLinea = precio.replace(".", ",");

// double precio2 = Double.parseDouble(precioLinea);
/*
* String[] fecDeHoy =
* unaLineaPedido.getPrecioProductoLineaPedido().toString().replace(".",
* ",")); String fechaDelDia = ""; for (int i = 0; i <
* fecDeHoy.length; i++) { fechaDelDia += "" + fecDeHoy[i];
}
*/
//double precio = Double.parseDouble(fechaDelDia);
/*
* BigDecimal precio =
* unaLineaPedido.getPrecioProductoLineaPedido(); BigDecimal valor =
* new BigDecimal("6,2"); for (int i = 0; i < 5; i++) { precio =
* precio.add(valor); // <-- Se debe de reasignar el nuevo objeto }
* System.out.println(precio);
*/
String insert = "INSERT INTO LineaPedido (idLineaPedido, idPedido, nombreProductoLineaPedido, cantidadProductoLineaPedido, precioProductoLineaPedido"
+ "VALUES ( " + idLineaPedido + "," + idPedido + "," + nombreProductoLineaPedido + "," + cantidadProductoLineaPedido + "," + precio2 + ")";
st.executeUpdate(insert);
guardar = true;
con.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
return guardar;
}

alguna idea de como convertirlo para ingresarlo utilizando mi codigo ??

junio 10, 2012 | Registered Commenterdmorales

como veran en el codigo tengo comentado cosas que he probado de hacer tambien.

junio 10, 2012 | Registered Commenterdmorales

Cuando usas ese mismo código, pero con el BigDecimal, ¿Tienes algún error o excepción al ejecutarlo?.

Usas statement, no prepared statement. Si te da algún error extraño a causa de la construcción de tu statement, podrías probar con un prepared statement, y su método setBigDecimal.

junio 10, 2012 | Registered Commenterchoces

si tengo, es la siguiente:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '( 1,6,'Diente 40x40',3,'471.00')' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

junio 10, 2012 | Registered Commenterdmorales

No puedo comprobarlo (no uso MySQL), pero creo que te falta un paréntesis aquí:

(idLineaPedido, idPedido, nombreProductoLineaPedido, cantidadProductoLineaPedido, precioProductoLineaPedido" <----

Si no me equivoco, la línea debería ser como sigue:

String insert = "INSERT INTO LineaPedido (idLineaPedido, idPedido, nombreProductoLineaPedido, cantidadProductoLineaPedido, precioProductoLineaPedido)"
+ " VALUES ( " + idLineaPedido + "," + idPedido + "," + nombreProductoLineaPedido + "," + cantidadProductoLineaPedido + "," + precio2 + ")";

junio 10, 2012 | Registered Commenterchoces

Muchas Gracias !!! Era eso, me faltaba cerrar el parentesis en el string sql. por eso me daba error de syntax. que no podía determinarlo.

junio 11, 2012 | Registered Commenterdmorales