Maison >développement back-end >C++ >Comment gérer les valeurs DBNull lors de l'attribution de paramètres SQL en C# ?

Comment gérer les valeurs DBNull lors de l'attribution de paramètres SQL en C# ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-11 08:48:45972parcourir

How to Handle DBNull Values When Assigning to SQL Parameters in C#?

Impossible d'attribuer la valeur DBNull à SqlParameter

Lorsque vous essayez d'attribuer une valeur nulle à SqlParameter, le code suivant signalera une erreur :

<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1];    
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = (AgeItem.AgeIndex == null) ? DBNull.Value : AgeItem.AgeIndex;
parameters[0] = planIndexParameter;</code>

Le problème est que l'opérateur ?: ne peut pas déterminer le type de retour car il peut s'agir d'une valeur de type int ou d'une valeur de type DBNull, et les deux sont incompatibles.

Solution :

Pour résoudre ce problème, vous pouvez choisir les méthodes suivantes :

  • Casting : Convertit l'instance AgeIndex en objet de type, qui satisfait aux exigences de l'opérateur ?: :
<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1];     
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = (object)AgeItem.AgeIndex ?? DBNull.Value;
parameters[0] = planIndexParameter; </code>
  • Utilisez l'opérateur de coalescence nul : Utilisez l'opérateur de coalescence nul ? :
<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1];     
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = AgeItem.AgeIndex ?? DBNull.Value;
parameters[0] = planIndexParameter; </code>

Selon la documentation MSDN pour l'opérateur ?:, first_expression et second_expression doivent être du même type, sinon un type peut être implicitement converti en l'autre.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn