Капсулирал съм по-голямата част от моята SQL логика в DAL. Един от тези DAL методи изтегля скаларни Ints, използвайки следната логика. Може да ви свърши работа:
object temp = cmnd.ExecuteScalar();
if ((temp == null) || (temp == DBNull.Value)) return -1;
return (int)temp;
Знам, че сте въвели много код по-горе, но мисля, че това наистина е същността на вашия проблем. Успех!