Zamknięto większość mojej logiki SQL w DAL. Jedna z tych metod DAL pobiera skalarne wartości Ints przy użyciu następującej logiki. To może działać dla Ciebie:
object temp = cmnd.ExecuteScalar();
if ((temp == null) || (temp == DBNull.Value)) return -1;
return (int)temp;
Wiem, że wpisałeś dużo kodu powyżej, ale myślę, że to jest naprawdę istota twojego problemu. Powodzenia!