Java bigDecimal MySQL(Prepared Statement)十进制丢失

时间:2013-04-03 15:26:53

标签: java mysql prepared-statement bigdecimal

我的问题是,当我将BigDecimal保存在数据库中时(例如:22.21),然后我从数据库中取回BigDecimal,小数点不再存在(例如:22)

我有以下查询

String statement ="INSERT INTO " + TABLE_NAME + " (amount) VALUES( ? )";
PreparedStatement stmt = DataBase.getInstance().prepareStatement(statement);
//set data
stmt.setBigDecimal(1, payment.getAmount());
// ...

然后我以这种方式从数据库中获取金额:

String q = "SELECT * FROM " + TABLE_NAME + " WHERE project=" + project.getId();
//...
payment.setAmount(rs.getBigDecimal("amount")); // <-- decimal is lost

我的数据库中的金额为:

amount NUMERIC NOT NULL

答案:

MySQL类型应为DECIMAL(x,y)而不是NUMERIC

(这解决了我的问题,谢谢你Andriy)

0 个答案:

没有答案