SQL Server 용 MS JDBC 드라이버를 사용하고 십진수 (18,5) 열에 값을 삽입하려고합니다.SQL Server 소수 열에 어떻게 삽입합니까?
com.microsoft.sqlserver.jdbc : 나는이 오류가) (실행 호출에
PreparedStatement ps = conn.prepareStatement("INSERT INTO [dbo].[AllTypesTable] ([decimal18_0Col]) VALUES (?)");
ps.setObject(1, new BigDecimal(3.14));
ps.execute();
: 워드 프로세서 소수점 열이 BigDecimal를 매핑이라고, 그래서 나는이 작업을 수행하기 위해 노력하고있어 .SQLServerException : 데이터 형식을 nvarchar를 소수로 변환하는 중 오류가 발생했습니다.
드라이버는 복식에 만족하실 것 같다 않는, 그래서 나는이 작업을 수행 할 수 있습니다
ps.setObject(1, 3.14);
어떻게 삽입 할 수 있습니다 내가 BigDecimal를 내게주는 여분의 정밀도를 필요로하는 경우?
업데이트 : 물론 3.14를 삽입 할 경우 걱정할 필요가 없습니다. 실제로 10 진수 정밀도가 필요한 값을 삽입하려면 어떻게해야합니까? 소수점 이하 30 자리를 갖는 것, 예를 들면?
대신 setBigDecimal을 사용하면 어떻게됩니까? BTW : 이것은 분명히 버그입니다. JDBC 표준 (JDBC 4.1, 부록 B)은 JDBC 드라이버가 숫자 필드, 비트, 부울, char, varchar 및 longvarchar에 대해 BigDecimal을 받아 들여야한다고 명시 적으로 지정합니다. –