2016-10-08 5 views
0

BigDecimalをMySQLテーブルに挿入する際に問題があります。 MySQL列はタイプdecimal(10,2) NOT NULL DEFAULT 0.00です。Java MySQLのBigDecimalカラムはnullにはできません

MYSQLクエリ

UPDATE `table` SET `Cost` = ? WHERE `Id` = 1 

JAVAコード:

stmt.setBigDecimal(0, BigDecimal.valueOf("0.00")); 
stmt.executeUpdate(); 

は私がですが、なぜでしょうcom.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'Cost' cannot be null

を言うエラーが出ますか?

答えて

0

バインドされたパラメータインデックスは1ベースであり、JDBCでは0ベースではありません。 つまり、最初のバインドされたパラメータは、インデックス「1」を持ち、「0」ではありません。

次の行に "1" と "0" を交換すると、あなたの問題を解決します:

stmt.setBigDecimal(1, new BigDecimal("0.00")); 
+0

setBigDecimal' 'から:パラメータ: ' parameterIndex最初のパラメータを、第二は2で、1 ..です.' –

+0

@ user2914191はい、まったく同じですが、あなたは '1'の代わりに' 0'を使いました。 '1'を使うべきです。 –

+0

ええ、私の実際のコードでは悲しいです、悲しいことに、私はBigDecimalsに根本的な問題を作り出していると思っていましたが、明らかに問題は私のクエリが構築されているところです。とにかくありがとう –

関連する問題