私は最後の1時間はオンラインで調査しましたが、この問題の解決策を見つけることはできません。JDBC callableStatement.setDouble() 'Infinity'が有効な数値またはおおよその数値ではありません
だから、私は、また、二重値を返すbreakDownFee.getAmount()
の値を出力しようとしている、上記for each
ループを実行する
for (BalanceBreakDownFee breakDownFee : tuitionFee.getBalanceBreakDownFees()) {
System.out.println("Balance Breakdown Fee Description : "+breakDownFee.getDescription());
System.out.println("Balance Breakdown Fee Amount : "+breakDownFee.getAmount());
CS_addBalBreakDownFee.setString(1, breakDownFee.getDescription());
CS_addBalBreakDownFee.setDouble(2, breakDownFee.getAmount());
CS_addBalBreakDownFee.registerOutParameter(3, Types.INTEGER);
CS_addBalBreakDownFee.executeUpdate();
int balanceBreakDownFeeId = CS_addBalBreakDownFee.getInt(3);
}
前有します。ここに出力があります。何らかの理由で
Description :Downpayment
Amount : 8000.0
Description :First Quarter
Amount : 2663.28
Description :Second Quarter
Amount : 2663.28
私はCS_addBalBreakDownFee.setDouble(2, breakDownFee.getAmount());
のための呼び出しを行うとき、私はsetDouble()
ラインを指すエラーが発生します。
java.sql.SQLException: 'Infinity' is not a valid numeric or approximate numeric value
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:959)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:862)
at com.mysql.jdbc.PreparedStatement.setDouble(PreparedStatement.java:3252)
あなたが見ることができるように、私はそれが上記の前の印刷と比較し得るどのような値を参照するために、各ループ内breakDownFee.getAmount()
を印刷してみました。
そして、私はこれを取得、
Balance Breakdown Fee Description : Downpayment
Balance Breakdown Fee Amount : 8000.0
Balance Breakdown Fee Description : First Quarter
Balance Breakdown Fee Amount : Infinity
それは2663.28 double値を受け入れない理由私は理解していません。それはjdbc
はまた'Infinity'
として、それを読んでいるように見える、詳細を追加するために、量を格納mysqlの列には、私が2663.28を保存することができますどのようにDECIMAL(10,2)
任意の考えや提案に設定されています値?これは小数点以下2桁の問題ですか?もしそうなら、私はこれをどのように修正できますか?
ありがとうございます。
まず、お金のために浮動小数点を使用するべきではありません。 SQLでは 'DECIMAL'、Javaでは' BigDecimal'を使うべきです。 – EJP
倍精度の列が有効な倍精度値であるため、無限大を値として受け入れない場合、私は驚いています。その列の実際のタイプは何ですか? –
@ MarkRotteveel量を含むJTable列の実際の型は、オブジェクト型に設定されます。 – p3ace