SQL Server用のMS JDBCドライバを使用していて、小数点(18,5)の列に値を挿入しようとしています。SQL Serverの10進数の列に挿入する方法は?
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を10進数に変換中にエラーが発生しました。
ドライバはダブルスと幸せであるように見えるんので、私はこれを行うことができます。
ps.setObject(1, 3.14);
は、どのように私は挿入を行うことができます私はBigDecimalのが私を与える余分な精度が必要な場合は?
更新:もちろん、私が3.14を挿入しようとすると、これについて心配する必要はありません。実際に10進精度が必要な値を挿入する場合はどうすればよいですか?例えば、小数点以下30桁の何か?
代わりにsetBigDecimalを使用するとどうなりますか? BTW:これは明らかにバグです。JDBC標準(JDBC 4.1、付録B)では、JDBCドライバがnumericフィールド、bit、boolean、char、varcharおよびlongvarcharにBigDecimalを受け入れる必要があることを明示的に指定しています。 –