Null en C# est différent de NULL en SQL. NULL en SQL est exprimé sous la forme DBNull.Value en C#.
Remarque : Les paramètres SQL ne peuvent pas accepter la valeur nulle de C# Si null est transmis, une erreur sera signalée.
Regardons un exemple ci-dessous :
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();
Il n'y a aucun problème avec le code ci-dessus. En fait, lorsque la valeur de stuName ou stuAge est nulle, une exception sera levée. Alors comment le résoudre ?
Solution : Lorsque la valeur de stuName ou stuAge est nulle, transmettez DBNull.Value. Ensuite, écrivez une méthode générale statique dans la classe publique pour juger la valeur du paramètre transmise. Si elle est nulle, renvoyez DBNull.Value, sinon renvoyez la valeur d'origine.
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 }
Le code après appel de la méthode ci-dessus est le suivant :
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();
De plus, si la valeur du paramètre provient un contrôle (comme une zone de texte), la valeur du paramètre transmise ne sera pas nulle (car la valeur du contrôle ne sera pas nulle, même s'il n'y a pas de valeur, elle sera toujours "") Si vous le souhaitez. sachez que lorsque la valeur du contrôle est "" (par exemple aucun caractère saisi dans la zone de texte), la valeur du champ de la table de données est NULL, il vous suffit de modifier légèrement la méthode SqlNull :
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 }
Extension :
Vous pouvez également transmettre des groupes de paramètres lors de la transmission de paramètres SQL, comme suit :
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();
Remarque : la valeur du paramètre dans. le nouveau SqlParameter (nom du paramètre, valeur du paramètre) n'accepte pas non plus les valeurs nulles, et le groupe de paramètres parm n'accepte pas non plus null , if(parm != null) ne peut être jugé sans .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!