J'ai encapsulé la plupart de ma logique SQL dans un DAL. L'une de ces méthodes DAL extrait les Ints scalaires en utilisant la logique suivante. Cela peut fonctionner pour vous :
object temp = cmnd.ExecuteScalar();
if ((temp == null) || (temp == DBNull.Value)) return -1;
return (int)temp;
Je sais que vous avez entré beaucoup de code ci-dessus mais je pense que c'est vraiment l'essence de votre problème. Bonne chance !