SQL Server 用の MS JDBC ドライバーを使用しており、値を decimal(18,5) 列に挿入しようとしています。ドキュメントでは、10 進数の列は BigDecimal にマップされると書かれているため、これを実行しようとしています。
PreparedStatement ps = conn.prepareStatement("INSERT INTO [dbo].[AllTypesTable] ([decimal18_0Col]) VALUES (?)");
ps.setObject(1, new BigDecimal(3.14));
ps.execute();
execute() の呼び出しで、次のエラーが発生します。
com.microsoft.sqlserver.jdbc.SQLServerException: データ型 nvarchar を 10 進数に変換中にエラーが発生しました。
ドライバーはダブルスに満足しているようなので、これを行うことができます:
ps.setObject(1, 3.14);
BigDecimal が提供する追加の精度が必要な場合、挿入を行うにはどうすればよいですか?
更新: もちろん、3.14 を挿入する場合は、これについて心配する必要はありません。実際に小数精度が必要な値を挿入したい場合はどうすればよいですか? たとえば、小数点以下30桁の何か?