Většinu své SQL logiky jsem zapouzdřil do DAL. Jedna z těchto metod DAL stahuje skalární Ints pomocí následující logiky. Může to fungovat pro vás:
object temp = cmnd.ExecuteScalar();
if ((temp == null) || (temp == DBNull.Value)) return -1;
return (int)temp;
Vím, že jste výše zadali mnoho kódu, ale myslím si, že toto je skutečně podstata vašeho problému. Hodně štěstí!