Einfügen von NULL in den SQL-string leer ist
versuchen zum einfügen von NULL-wenn es nicht ausgewählt ist nichts in meine combobox aber wenn ich das mache:
prikaz.Parameters.AddWithValue("@odjezd", cb_odjezd.Text == string.Empty ?
null : cb_odjezd.Text);
Erhalte ich folgende exception:
Die parametrisierte Abfrage erwartet den parameter @ odjezd
Kann mir jemand helfen, dieses Problem lösen bitte?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, DbNull.Wert Wert statt.
So wird es
BEARBEITEN
Acroding zu acepted Antwort hier, sollte es genug sein, in Ihrem Fall zu
(object)DBNull.Value
Das Problem ist, dass C# erwartet die gleichen Typ Werte in der Bedingung hier, aber in einem Fall, den Sie
set
DbNull.Value
in einem anderenstring
. So castingDbNull.Value
zum Objekt machen, "pass", die Regel.(object)
um es zu kompilieren, z.B.? (object)DbNull.Value : cb_objezd.Text
datatype
istnullable
?Verwenden Sie DBNull
versuchen Sie es mit dieser :
Das Schlüsselwort null repräsentiert eine ungültige Referenz. Die Klasse System.DbNull repräsentiert einen nicht vorhandenen Wert in einem Datenbankfeld.
System.DBNull
' und 'string
'?
(Betreiber ,äste etc.) verschiedene Typen haben , Sie müssen implizit konvertiert Sie in einen gemeinsamen Typ .Entweder die Art der
first_expression
undsecond_expression
muss die gleiche sein, oder eine implizite Konvertierung muss vorhanden sein von einem Typ zum anderen.-MSDN.?:
können nicht gegossentype
selbst ,Hier sind Sie wieder, die entweder einestring
oderDbNull
Art Wert ,So haben Sie den cast-Instanz_objezd.Text
Objekttyp kompatibel zu machen .DBNull ist ehrlich gesagt, ein bisschen ein PITA - und beißt es viele Leute. Jedoch, ein Weg, um zu vermeiden, dass diese Schmerzen, ist die Verwendung eines ORM-oder micro-ORM, der dieses problem gehen Weg. Zum Beispiel, mit dapper:
Hier dapper wird automatisch parametrieren die Werte korrekt, einschließlich der Behandlung von
null
-Referenzen und leerNullable<T>
alsDBNull.Value
. Plus es bedeutet, dass Sie vermeiden alle der "Spaß" von ADO.NET einfach sorgen machen:Beachten Sie, dass dapper hat auch große Werkzeuge in Bezug auf Materialisierung zu, zu vermeiden Sie alle den Schmerz des Daten-Leser.