Dựa trên MSDN:
Đối với các câu lệnh UPDATE, INSERT và DELETE, giá trị trả về là số hàng bị ảnh hưởng bởi lệnh. Khi trình kích hoạt tồn tại trên bảng đang được chèn hoặc cập nhật, giá trị trả về bao gồm số hàng bị ảnh hưởng bởi cả thao tác chèn hoặc cập nhật và số hàng bị ảnh hưởng bởi trình kích hoạt hoặc trình kích hoạt. Đối với tất cả các loại câu lệnh khác, giá trị trả về là -1. Nếu quá trình khôi phục xảy ra, giá trị trả về cũng là -1.
Bạn muốn trả lại số hàng bị ảnh hưởng bởi lệnh và lưu nó vào int
biến nhưng vì loại câu lệnh là select
vì vậy nó trả về -1
.
Giải pháp :Nếu bạn muốn lấy số hàng bị ảnh hưởng bởi lệnh SELECT và lưu nó vào một biến int, bạn có thể sử dụng ExecuteScalar
.
var theCount = (int)cmd.ExecuteScalar();