SQL Server パラメータ設定時の Null 許容値のアドレス指定
SqlParameter
オブジェクトを操作する場合、null 許容値の処理には細心の注意が必要です。 Null 値を整数パラメータ (例: SqlDbType.Int
) に直接代入すると、「DBNull から int への暗黙的な変換がありません」というエラーが発生することがよくあります。これは型の互換性がないために発生します。
この問題は通常、条件演算子 (?:
) を使用するときに発生します。 この演算子は、int
または DBNull
.
解決策: オブジェクト キャストの採用
効果的なアプローチの 1 つは、null 許容値を object
にキャストすることです。 object
は int
と DBNull
の両方の値に対応できるため、これにより型のあいまいさが解決されます。
<code class="language-csharp">SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int); planIndexParameter.Value = (object)AgeItem.AgeIndex ?? DBNull.Value;</code>
解決策: Null-Coalescing Operator の活用
別の解決策は、null 合体演算子 () を利用します。この演算子は、左側のオペランドが null でない場合、それをエレガントに返します。それ以外の場合は、右側のオペランドを返します。??
<code class="language-csharp">SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int); planIndexParameter.Value = AgeItem.AgeIndex ?? DBNull.Value;</code>重要なのは、
が null の場合、AgeItem.AgeIndex
は SQL Server の null 値表現である planIndexParameter.Value
に設定されます。DBNull.Value
オブジェクト内の null 値を確実に処理でき、一般的なエラーを防ぐことができます。SqlParameter
以上がNull 許容 SQL Server パラメーターを処理する際の「DBNull から int への暗黙的な変換がありません」エラーを回避する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。