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
Libérer: 2025-01-11 08:48:45
original
964 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion
  • 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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal