Null in C# unterscheidet sich von NULL in SQL. NULL in SQL wird in C# als DBNull.Value ausgedrückt.
Hinweis: SQL-Parameter können den Nullwert von C# nicht akzeptieren. Wenn Null übergeben wird, wird ein Fehler gemeldet.
Sehen wir uns unten ein Beispiel an:
1 SqlCommand cmd=new SqlCommand("Insert into Student values(@StuName,@StuAge)" ,conn);2 cmd.parameters.add("@StuName" ,stuName);3 cmd.parameters.add("@StuAge" ,stuAge);4 cmd.ExecuteNonQuery();
Wenn der Wert von stuName oder stuAge null ist, gibt es tatsächlich kein Problem. Es wird eine Ausnahme ausgelöst. Wie kann man es also lösen?
Lösung: Wenn der Wert von stuName oder stuAge null ist, übergeben Sie DBNull.Value. Schreiben Sie als Nächstes eine statische allgemeine Methode in die öffentliche Klasse, um den übergebenen Parameterwert zu beurteilen. Wenn er null ist, geben Sie DBNull.Value zurück, andernfalls geben Sie den ursprünglichen Wert zurück.
1 public static object SqlNull(object obj) 2 { 3 if(obj == null) 4 { 5 return DBNull.Value; 6 } 7 else 8 { 9 return obj;10 } 11 }
Der Code nach dem Aufruf der obigen Methode lautet wie folgt:
1 SqlCommand cmd=new SqlCommand("Insert into Student values(@StuName,@StuAge)" ,conn);2 cmd.parameters.add("@StuName" ,SqlNull(stuName));3 cmd.parameters.add("@StuAge" ,SqlNull(stuAge));4 cmd.ExecuteNonQuery();
Außerdem, wenn der Parameterwert von stammt Bei einem Steuerelement (z. B. einem Textfeld) ist der übergebene Parameterwert nicht null (da der Wert des Steuerelements nicht null ist, auch wenn es keinen Wert hat, ist es immer noch „“) Beachten Sie, dass der Wert des Datentabellenfelds NULL ist, wenn der Wert des Steuerelements „“ ist (z. B. wenn keine Zeichen in das Textfeld eingegeben werden). Sie müssen die SqlNull-Methode nur geringfügig ändern:
1 public static object SqlNull(object obj) 2 { 3 if(obj == null || obj.ToString() == "") 4 { 5 return DBNull.Value; 6 } 7 else 8 { 9 return obj;10 } 11 }
Erweiterung:
Sie können bei der Übergabe von SQL-Parametern auch Parametergruppen wie folgt übergeben:
1 SqlParameter[] parm = new SqlParameter[] 2 { 3 new SqlParameter("@StuName", SqlNull(stuName)), 4 new SqlParameter("@StuAge", SqlNull(stuAge)) 5 } 6 if(parm != null) 7 { 8 cmd.Parameters.AddRange(parm); 9 }10 cmd.ExecuteNonQuery();
Hinweis: Der Parameterwert in new SqlParameter (Parametername, Parameterwert) akzeptiert auch keine Nullwerte, und die Parametergruppe parm akzeptiert auch keine Nullwerte , if(parm != null) kann nicht ohne beurteilt werden.
Das obige ist der detaillierte Inhalt vonFehler beim Übergeben eines Nullwerts an einen SQL-Parameter in C# und wie man ihn beheben kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!