cmd1.ExecuteScalar()
tidak mengembalikan bilangan bulat kotak. Tetapkan ke objek dan lihat di debugger untuk melihat apa itu sebenarnya.
Saya kira itu akan mengembalikan Desimal atau ganda, dan Anda perlu melakukan:
Int32 result = (Int32)(double)cmd1.ExecuteScalar();
Atau:
Int32 result = (Int32)(Decimal)cmd1.ExecuteScalar();
[EDIT sebagai tanggapan atas pertanyaan di komentar di bawah]
Untuk mempertahankan nilai desimal, lakukan saja ini:
Decimal result = (Decimal) cmd1.ExecuteScalar();
Jika perlu, Anda dapat menggandakan desimal:
double result = (double)(Decimal) cmd1.ExectuteScalar();