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 :
<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>
<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!