style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Trabajar con cantidades en java y mysql

Realize una aplicación conforme iba aprendiendo java, ahora que ya esta casi terminada me encuentro con un problema.
Mysql no acepta que guarde en una columna double cantidades como 1,000.00.
Para trabajar con cantidades de moneda que tipo de dato en mysql puedo utilizar?

Para guardar digamos 12,000.45

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

?

Qué tipo le pasas desde Java? debe aceptar BigDecimal sin problemas. Si le estás pasando un String "1,000.00" estás mal... eso es para desplegarlo al usuario pero a la base de datos tienes que pasarle el dato numérico...

En java uso BigDecimal

java BigDEcimal y en mysql double

Respuesta

Pudieras utilizar double en ambos y te evitarias de problemas.

"Mysql no acepta que guarde

"Mysql no acepta que guarde en una columna double cantidades como 1,000.00."

Si lo estas guardando como string y tu columna es numérica ( double ) pues, no, no te va a dejar.

Deberías tener una referencia al número y si usas JDBC escribir:

pstmt.setDouble( aDouble,  anIndex );

Pero si tu variable es un string:

ptmt.setDouble( aString, anIndex ) ;

Ni siquiera va a compilar. Suponiendo que le estás pasando el string concatenado ( mala práctica ):

String aStringWithCommaAndDecimalPoint = "1,000.00";
String insertStatement = "insert into blah ( monto ) values ( "+aStringWithCommaAndDecimalPoint+")";

Pues claro que te va a mandar lejos.

Lo que debes de hacer ( además de usar un PreparedStatement ) es usar el número:

double d = 1000.0;
String insertStatement = "INSERT INTO BLAH values( " + d + ")";

Pero si ya estás en eso, mejor usa un PreparedStatement

( mencioné que mejor uses un PreparedStatement )

;)

Imagen de Livio

y que tal...

Y que tal si la columna de MySQl le pones tipo DECIMAL() ;?

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">