cmd1.ExecuteScalar()
không trả về một số nguyên được đóng hộp. Gán nó cho một đối tượng và xem nó trong trình gỡ lỗi để xem nó thực sự là gì.
Tôi đoán nó sẽ trả về số thập phân hoặc số kép và bạn cần làm:
Int32 result = (Int32)(double)cmd1.ExecuteScalar();
Hoặc:
Int32 result = (Int32)(Decimal)cmd1.ExecuteScalar();
[CHỈNH SỬA để trả lời một câu hỏi trong dấu phẩy bên dưới]
Để giữ giá trị thập phân, chỉ cần thực hiện điều này:
Decimal result = (Decimal) cmd1.ExecuteScalar();
Nếu cần, bạn có thể chuyển số thập phân thành số kép:
double result = (double)(Decimal) cmd1.ExectuteScalar();