2016-10-08 4 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 

자바 코드 :

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

내가 왜 이런 일이 com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'Cost' cannot be null

을 말한다 오류가?

답변

0

바운드 매개 변수 색인은 JDBC 기반에서는 0을 기준으로하지 않으며 1부터 시작합니다. 즉, 첫 번째 바인딩 된 매개 변수는 인덱스가 "0"이 아니라 "1"입니다.

이 문제가 해결됩니다 다음 줄에 "1"과 "0"으로 교체 : 매개 변수 :`setBigDecimal`에서

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

을 ', 두 번째는 2, 첫 번째 매개 변수가 1 차례 parameterIndex .. .' –

+0

@ user2914191, 맞습니다.하지만 '1' 대신에'0'을 사용했습니다. '1'을 사용해야합니다. –

+0

네가 맞다. 아아아, 내 실제 코드는 1이고, 나는 BigDecimal에 근본적인 문제를 만들고 있다고 생각했지만 분명히 문제는 내 쿼리가 생성되는 방식이다. 어쨌든 고마워. –

관련 문제