Có cách nào để nhận tổng số hàng được trả lại từ truy vấn SQL (từ IDataReader) trước khi lặp qua các hàng bằng cách sử dụng reader.Read();
không?IDataReader - Bất kỳ cách nào để nhận tổng số hàng?
Trả lời
No.
IDataReader
là chế độ xem chỉ đơn giản về kết quả; nó không thể đếm được.
Không, trình quản lý dữ liệu sẽ không trả về số đầu tiên. Tuy nhiên, nếu bạn cần làm điều đó, hãy sử dụng hai truy vấn trả lại nhiều tập kết quả.
ví dụ như trong SQL Server:
sql = "Select count (*) từ A; Select * from A;"
iterate tập kết quả. Sử dụng bộ dữ liệu trên tập kết quả thứ hai.
Máy chủ cơ sở dữ liệu có thể thực hiện điều này khá nhanh nếu nó đang sử dụng các chỉ mục phù hợp.
Số lượng hàng được tính chỉ khi bạn đọc DataReader nhưng tôi không hiểu, tại sao bạn muốn biết các hàng đếm trước khi đọc.
Để phân bổ chính xác số lượng lưu trữ hoàn hảo cần thiết nếu lưu trữ một bản sao của toàn bộ kết quả set (thay vì, ví dụ, cho phép [List (T) .Add()] (http://msdn.microsoft.com/en-us/library/3wcytfd1) tự động tăng [Capacity] của nó (http: // msdn .microsoft.com/vi-us/library/y52x03h2) thường xuyên). – binki
Đó là điều hiển nhiên nhất tôi từng nghĩ đến. Một trường hợp sử dụng khác là cập nhật thanh tiến trình xác định trong khi đọc các hàng. Một MIGHT khác là đầu vào để tìm hiểu cách xử lý các hàng (nghĩa là, bạn có thể muốn xử lý 100 hàng khác với cách bạn xử lý 10 triệu hàng và có thể là một cơn đau để chuyển đổi giữa chừng). Có lẽ cũng có nhiều lý do chính đáng khác. –
Cũng qua ngày đăng nhưng có một cách, mà làm việc cho tôi mất một thời gian để có được bởi vì tôi hút tại từ ngữ tìm kiếm google của tôi.
dbCommand.Connection.Open();
//dbReader = dbCommand.ExecuteReader(); I left this here to show not to do the read
searchCount = dbCommand.ExecuteScalar(); // this line returns the value count
// from my tests on my reader it works perfectly
Điều này không đòi hỏi hai sự thực thi riêng biệt, có nghĩa là nó có thể dễ bị tổn thương trong điều kiện chủng tộc nếu ai đó thay đổi thứ gì đó giữa gọi ExecuteScalar() (để lấy số đếm) và gọi ExecuteReader() (để tự lấy các hàng)? –
- 1. cách nhận tổng số hàng với mysqli
- 2. Nhận tổng số hàng trong Entity Framework
- 3. bất kỳ cách nào để "ping" một số điện thoại?
- 4. Chèn số lượng lớn không chèn bất kỳ hàng nào
- 5. bất kỳ cách nào để nhận BindingResult cho @RequestParam?
- 6. Bất kỳ cách nào để nhận email người dùng Twitter?
- 7. Phương pháp Java để tổng hợp bất kỳ số lượng int nào
- 8. Java: Nhận số tuần từ bất kỳ ngày nào?
- 9. Hãy biểu thị bất kỳ số nào làm tổng của bốn số nguyên tố
- 10. SQLite: Nhận Tổng số/Tổng của Cột
- 11. Làm cách nào để nhận được bất kỳ số nhận dạng nào của hoạt động trên cùng?
- 12. Nhận tổng số hàng khi sử dụng LIMIT?
- 13. Có bất kỳ tổng quan ổi nào không?
- 14. Làm thế nào để thực hiện một phương pháp chấp nhận bất kỳ số lượng đối số của bất kỳ loại nào trong Java?
- 15. Nhận tổng số hàng khi sử dụng LIMIT
- 16. Làm cách nào để chuyển đổi một DataTable thành IDatareader?
- 17. Java Vòng lên Bất kỳ Số nào
- 18. Bitshift để nhân với bất kỳ số nào
- 19. Làm cách nào để kiểm tra bất kỳ số bị thiếu nào từ một chuỗi số?
- 20. cách nhận số lượt +1 trong google cộng với bất kỳ API nào
- 21. Bất kỳ cách nào để giảm kích thước văn bản?
- 22. Cho phép chức năng javascript chấp nhận bất kỳ số lượng đối số nào
- 23. Sử dụng jquery để lấy tổng số hàng và tổng số bảng lớn
- 24. MySQL - đếm tổng số hàng trong php
- 25. Bất kỳ cách đơn giản nào để có được độ dài hàng đợi của ActiveMQ?
- 26. Làm cách nào để nhận số hàng trong JDBC?
- 27. Cách nhận tổng số sau khi đánh số trang Kaminari
- 28. Bất kỳ cách nào tốt hơn để TRIM() sau string.Split()?
- 29. Eclipse không nhận ra bất kỳ nhập khẩu nào
- 30. Tại sao Tổng số đơn hàng và tổng số đơn hàng OpenCart xuất hiện hai lần?
@sll: Tham chiếu bạn trỏ đến không còn hợp lệ. – michael
Cập nhật liên kết, Xem [cách lấy số hàng bằng SqlDataReader trong C#] (http://stackoverflow.com/q/1383315/485076) – sll