Fehler beim Übergeben eines Nullwerts an einen SQL-Parameter in C# und wie man ihn beheben kann

零下一度
Freigeben: 2017-06-23 16:27:19
Original
1950 Leute haben es durchsucht

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();
Nach dem Login kopieren

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 }
Nach dem Login kopieren

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();
Nach dem Login kopieren

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  }
Nach dem Login kopieren

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();
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage