ホームページ > バックエンド開発 > C++ > C# で SqlParameter に NULL 値を適切に割り当てる方法は?

C# で SqlParameter に NULL 値を適切に割り当てる方法は?

Barbara Streisand
リリース: 2025-01-10 22:42:49
オリジナル
997 人が閲覧しました

How to Properly Assign NULL Values to SqlParameter in C#?

C# SqlParameter オブジェクトでの Null 値の処理

三項演算子 (?:) を使用して null 値を SqlParameter オブジェクトに直接割り当てると、多くの場合、「DBNull から int への暗黙的な変換がありません」のような型不一致エラーが発生します。 これは、三項演算子では両方の式が互換性のある型である必要があり、intDBNull には互換性がないために発生します。

推奨される解決策: Null 合体演算子 (??) と明示的なキャスト

最も効率的で読みやすいソリューションは、null 合体演算子 (??) を活用します。この演算子は、左側のオペランドが null でない場合はそれを返すことにより、null 値をエレガントに処理します。それ以外の場合は、右側のオペランドを返します。

への明示的なキャストと組み合わせることで、型の互換性が保証されます:object

<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1];
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = (object)AgeItem.AgeIndex ?? DBNull.Value;
parameters[0] = planIndexParameter;</code>
ログイン後にコピー
このコード スニペットは、最初に

値の使用を試みます。 null の場合、デフォルトは AgeItem.AgeIndex です。 DBNull.Value キャストにより、式は常にオブジェクトを返し、三項演算子の要件を満たします。(object)

代替: 条件付きキャスト

あまり簡潔ではありませんが、条件付きキャストでも目的の結果が得られます。

<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1];
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = (AgeItem.AgeIndex == null) ? (object)DBNull.Value : (object)AgeItem.AgeIndex;
parameters[0] = planIndexParameter;</code>
ログイン後にコピー
このアプローチでは、null を明示的にチェックし、互換性のために

DBNull.Value の両方を AgeItem.AgeIndex にキャストします。object

重要な注意事項: 型エラーを回避する鍵は、三項演算子の式で型の一貫性を確保することにあります。 などの共通型への明示的なキャストは、null 許容値やデータベース パラメーターを扱う場合に重要です。 null 合体演算子は、この特定のシナリオに対して、よりエレガントで読みやすいソリューションを提供します。object

以上がC# で SqlParameter に NULL 値を適切に割り当てる方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート