Foro sobre Java SE > BigDecimal y Mysql
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)
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 ??
como veran en el codigo tengo comentado cosas que he probado de hacer tambien.
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.
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)
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 + ")";
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.
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");