Ich habe den größten Teil meiner SQL-Logik in einer DAL gekapselt. Eine dieser DAL-Methoden ruft skalare Ints mithilfe der folgenden Logik ab. Es könnte für Sie funktionieren:
object temp = cmnd.ExecuteScalar();
if ((temp == null) || (temp == DBNull.Value)) return -1;
return (int)temp;
Ich weiß, dass Sie oben viel Code eingegeben haben, aber ich denke, dass dies wirklich der Kern Ihres Problems ist. Viel Glück!