SQL Serverデータベースに文字列またはNULLを挿入する問題
質問
:
私はこの記事では、トップの答えを読みます 問題のSQL Serverデータベースに文字列またはNULLを挿入します
私が間違っている場合は、私を修正しますが、??することができます - オペレータだけではなく、誰もが私の小さな問題を解決することができれば、私は、それを大幅に感謝し、同じタイプの2つの変数でない場合は使用する
。私は次のような私のプロジェクトでは、いくつかのコードを挿入しようとします。
Dictionary<string, string> strings = new Dictionary<string, string>()
{
{"@param0", strParam0},
{"@param1", strParam1},
{"@param2", strParam2}
};
foreach (string param in strings.Keys)
{
cmd.Parameters.AddWithValue(param, strings[param] ?? DBNull.Value);
}
しかし、Visual Studioは、次のメッセージを表示して文句を言います。
「オペレータ 『??』タイプ「文字列」と「System.DBNull」」
解決
はDBNullとヌルは、同じタイプではない、またnull許容型または参照型とがDBNullです。あなただけを使用できますか?同じタイプの値を持つ。
一つは、考えることができます?以下のためのシンタックスシュガーとしてオペレータます:
(left != null) ? left : right
三元動作したがって、左右の、左と同じタイプのものにする権利の両方を必要とします?また、オペレータは、同じタイプである必要があります。
だから、残念ながら、ない..あなたは、少なくともではないいくつかの醜い鋳造せずに、それをこのように行うことはできません。
他のヒント
試します:
cmd.Parameters.AddWithValue(param, (object)strings[param] ?? DBNull.Value);
cmd.Parameters.AddWithValue(param, strings[param] == null ? DBNull.Value : strings[param]);
唯一の欠点は、それが辞書が二回まで見えるかということです!
所属していません StackOverflow