1. ホーム
  2. c#

[解決済み】SqlParameter に null を代入する。

2022-04-08 04:34:33

質問

次のコードはエラーになります - "DBnullからint.への暗黙の変換がありません "。

SqlParameter[] parameters = new SqlParameter[1];    
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = (AgeItem.AgeIndex== null) ? DBNull.Value : AgeItem.AgeIndex;
parameters[0] = planIndexParameter;

解決方法は?

この問題は ?: 演算子は戻り値の型を決定できません。 int 値または DBNull 型の値であり、これらは互換性がありません。

もちろん、AgeIndexのインスタンスをキャストして、型 object を満たすような ?: の要件を満たしている。

を使用することができます。 ?? null coalescing 演算子は次のようになります。

SqlParameter[] parameters = new SqlParameter[1];     
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = (object)AgeItem.AgeIndex ?? DBNull.Value;
parameters[0] = planIndexParameter; 

以下は、引用です。 MSDNドキュメント を使用します。 ?: 演算子で説明されています。

first_expression と second_expression の型が同じであるか、一方の型から他方の型への暗黙の変換が存在しなければならない。