Cast en int sur SqlCommand-ExecuteScalar erreur de manipulation

J'ai un code qui est peut-être fragile. Cette déclaration ici

 int countDis = (int)cmd.ExecuteScalar();

Si je change la procédure stockée pour ne retourne RIEN, alors que le casting pour (int) est sur le point d'exploser. Si j'ai tout simplement l'enlever, alors je ne peut pas compiler.

Quel est le meilleur code de pratique pour la défensive de codage dans cette situation?

Utiliser les types Nullables comme int?
Vous pouvez vérifier ces: stackoverflow.com/a/3829494/447156 et blogs.msmvps.com/ryan/2007/01/28/generic-executescalar-method
Si vous modifiez la procédure stockée renvoie rien, alors vous feriez mieux d'utiliser cmd.ExecuteNonQuery, je pense.
Je l'ai changé uniquement pour les tests, il est censé être toujours le retour d'un nombre de type int
Procédure stockée SQL Server ne peut pas renvoyer à autre chose qu'un int que leur valeur de retour - si ce n'est pas vraiment un problème...

OriginalL'auteur | 2015-09-10