cmd1.ExecuteScalar()
ボックス化された整数を返していません。それをオブジェクトに割り当て、デバッガーでそれを見て、それが実際に何であるかを確認してください。
Decimal または double を返すことになると思いますが、次のことを行う必要があります。
Int32 result = (Int32)(double)cmd1.ExecuteScalar();
または:
Int32 result = (Int32)(Decimal)cmd1.ExecuteScalar();
[以下のコメントで質問に応じて編集]
10 進数値を保持するには、次のようにします:
Decimal result = (Decimal) cmd1.ExecuteScalar();
必要に応じて、10 進数を double にキャストできます:
double result = (double)(Decimal) cmd1.ExectuteScalar();