C#, T-SQL : T-SQLのFLOAT型フィールドに.NETのDouble.NaN(非数)の値を入れることはできません。

たとえば、

double a = double.NaN;
SqlParameter p = new SqlParameter("@value", SqlDbType.Float);
Param.Value = a;
cmd.Parameters.Add(p);
cmd.ExecuteNonQuery();

このようなコードがあったときに、cmd.ExecuteNonQuery(); で型変換ができないと System.Data.SqlClient.SqlException になります。

代替案としては、挿入する実数値がNaNだった場合には(可能であれば) Null (DbNull) を挿入するか、最大値、最小値を使うなどアプリケーションやプロジェクト後に対応を決める必要があります。

同様に正負無限大値(PositiveInfinity, NegativeInfinity)の値もFLOATのフィールドに入れることができません。

コメントを残す