cmd1.ExecuteScalar()
nie zwraca zapakowanej liczby całkowitej. Przypisz go do obiektu i spójrz na niego w debugerze, aby zobaczyć, czym naprawdę jest.
Zgaduję, że będzie to zwracać liczbę dziesiętną lub podwójną, i musisz to zrobić:
Int32 result = (Int32)(double)cmd1.ExecuteScalar();
Lub:
Int32 result = (Int32)(Decimal)cmd1.ExecuteScalar();
[EDYTUJ w odpowiedzi na pytanie w komentarzach poniżej]
Aby zachować wartość dziesiętną, po prostu zrób tak:
Decimal result = (Decimal) cmd1.ExecuteScalar();
W razie potrzeby możesz rzucić liczbę dziesiętną na podwójną:
double result = (double)(Decimal) cmd1.ExectuteScalar();