SqlParameterCollection accepte uniquement les non-null SqlParameter type d'objets, pas DBNull objets
Lorsque j'ajoute le paramètre SQL p
de la collection, je reçois un InvalidCastException
avec le message du titre du post.
parentId
est nullable entier et un nullable entier dans la base de données.
Pourquoi dois-je bénéficier de cette exception et comment puis-je le résoudre?
Je ne suis pas d'utiliser des procédures stockées et j'ai lu la même fils, mais ils ne m'aide pas.
var p = new SqlParameter("ParentId", SqlDbType.Int).Value = parentId ?? (object) DBNull.Value;
cmd.Parameters.Add(p);
-2 ? pfffhhhhh...
Je ne sais pas pourquoi c'est arriver downvoted. Il est bien question écrite avec le code qui reproduit le problème.
vcsjones de m'aider 🙂
Je ne sais pas pourquoi c'est arriver downvoted. Il est bien question écrite avec le code qui reproduit le problème.
vcsjones de m'aider 🙂
OriginalL'auteur Elisabeth | 2012-11-30
Vous devez vous connecter pour publier un commentaire.
Vous n'êtes pas d'ajouter votre
new SqlParameter
.p
est le résultat denew SqlParameter("ParentId", SqlDbType.Int).Value = parentId ?? (object) DBNull.Value
. En d'autres termes,p
lui-même estDBNull.Value
.Séparer l'instruction en deux, comme suit:
Sinon,
Soit assurez-vous que
p
est le paramètre, et non pas la valeur du paramètre.var p = new SqlParameter("ParentId", SqlDbType.Int).Value = (parentId ?? (object) DBNull)
Que signifierait la même chose (enfin, si vous ajoutez le
.Value
aprèsDBNull
), donc ne fonctionne pas.Oh oui, je vois. Il doit être le vendredi après-midi.
oh oui merci pour le mot clé "var" qui est arrivé le vendredi de minuit... aurais-je utiliser SqlParameter qui ne serait pas arrivé.
OriginalL'auteur
Vous devez utiliser:
OriginalL'auteur briantyler