Problem Einfügen String oder NULL in SQL Server-Datenbank
Frage
Ich habe gerade gelesen, die Top-Antwort auf diesen Beitrag:
Problem Einfügen String oder NULL in SQL Server-Datenbank
korrigiert mich wenn ich falsch liege, aber kann die ?? -. Betreiber nicht nur auf zwei Variablen des gleichen Typs verwendet werden, wenn nicht ich es sehr zu schätzen würde, wenn jemand mein kleines Problem lösen könnte
Ich habe versucht, unten einige Code in meinem Projekt ähnlich dem eingefügt werden soll.
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);
}
Aber Visual Studio beschwert sich mit der folgenden Meldung:
"Operator '??' kann nicht auf Operanden vom Typ ‚String‘ und ‚System.DBNull‘“
Lösung
DBNull und Null sind nicht vom gleichen Typ, noch sind Nullable Types oder Referenztypen und DBNull. Sie können nur verwenden ?? mit den Werten des gleichen Typs.
Man kann von der denken ?? Betreiber als syntaktischer Zucker für:
(left != null) ? left : right
Und die ternäre Operation erfordert sowohl links und rechts vom gleichen Typ zu sein, so also links und rechts von dem ?? Betreiber muss auch vom gleichen Typ sein.
Also, leider nein .. Sie können es auf diese Weise nicht, zumindest nicht ohne hässlichen Guss.
Andere Tipps
Versuchen:
cmd.Parameters.AddWithValue(param, (object)strings[param] ?? DBNull.Value);
cmd.Parameters.AddWithValue(param, strings[param] == null ? DBNull.Value : strings[param]);
Es werden nur Fehler ist, dass es das Wörterbuch nachschlagen zweimal tun!