Czy istnieje sposób na uzyskanie całkowitej liczby wierszy zwróconych przez zapytanie SQL (z obiektu IDataReader) przed wykonaniem iteracji w wierszach za pomocą reader.Read();
?IDataReader - Jakikolwiek sposób na uzyskanie całkowitych wierszy?
Odpowiedz
nr
IDataReader
jest prosty do przodu tylko widok wynikowego; nie może się liczyć.
Nie, datareader nie zwróci najpierw liczby. Jeśli jednak potrzebujesz tego, użyj dwóch zapytań, które zwracają wiele zestawów wyników.
na przykład w SQL Server:
sql = "SELECT COUNT (*) z A; select * from A;"
iteracyjne zestawów wyników. Użyj datareader na drugim zestawie wyników.
Serwer bazy danych powinien być w stanie wykonać to dość szybko, jeśli używa odpowiednich indeksów.
Liczba wierszy obliczana tylko po odczytaniu obiektu DataReader , ale nie udało mi się go odczytać, dlaczego chcesz poznać liczbę wierszy przed jej odczytaniem.
Aby przydzielić dokładnie idealną ilość miejsca do przechowywania niezbędnego do przechowywania kopii całego wyniku set (zamiast, na przykład, pozwalając [List (T) .Add()] (http://msdn.microsoft.com/en-us/library/3wcytfd1) automatycznie zwiększyć jego [Pojemność] (http: // msdn .microsoft.com/en-us/library/y52x03h2) często). – binki
To jest najbardziej oczywiste, które miałem na myśli. Innym przypadkiem użycia byłoby zaktualizowanie określonego paska postępu podczas odczytywania wierszy. Kolejna MIGA może być wprowadzana do heurystyki w celu przetwarzania wierszy (np. Możesz przetworzyć 100 wierszy w inny sposób niż przetwarzanie 10 milionów wierszy, a przełączenie w trakcie może być bolesne). Prawdopodobnie tony innych uzasadnionych powodów. –
Znacznie poza datą wysłania, ale jest sposób, który zadziałał dla mnie, zabrało mi trochę czasu, ponieważ wysysam treść moich wyszukiwań w Google.
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
Czy nie wymagałoby to dwóch oddzielnych egzekucji, co oznacza, że może być podatne na warunki wyścigu, jeśli ktoś zmieni coś pomiędzy wywołaniem ExecuteScalar() (aby uzyskać licznik) i wywołaniem ExecuteReader() (aby uzyskać same wiersze)? –
- 1. Jakikolwiek sposób na uzyskanie nazwy użytkownika iPhone'a?
- 2. Null bezpieczny sposób na uzyskanie wartości z IDataReader
- 3. Bardziej skuteczny sposób na uzyskanie permutacji całkowitych?
- 4. Jakikolwiek sposób na uzyskanie obsługi wielu regionów w Google Appengine?
- 5. Czy istnieje sposób na uzyskanie ruchów obiektów całkowitych w vim?
- 6. Jak przekonwertować DataTable na IDatareader?
- 7. Jakikolwiek sposób na uzyskanie kolumny powodującej com.microsoft.sqlserver.jdbc.SQLServerException: String lub dane binarne byłyby obcięte
- 8. Najlepszy sposób na uzyskanie oryginalnego celu
- 9. Prawidłowy sposób na uzyskanie najbardziej negatywnego Double
- 10. Kafka - najprostszy sposób na uzyskanie ostatniej offsetu
- 11. Clojure najlepszy sposób na uzyskanie wielu wątków?
- 12. Najbardziej pythonic sposób na uzyskanie poprzedniego elementu
- 13. Pobierz IDataReader z wpisanej listy
- 14. Czy istnieje sposób na uzyskanie danych pikseli z Internet Explorera?
- 15. Najlepszy sposób na uzyskanie tylko zmodyfikowanych wierszy z obserwowalnego pola (gdy dostępna jest opcja edycji zbiorczej)
- 16. Najszybszy sposób na uzyskanie liczby cyfr na numerze?
- 17. Jakikolwiek sposób na wprowadzanie wartości do mniejszych plików w Meteorze?
- 18. Jakikolwiek sposób na "otwórz Seq" lub podobny efekt?
- 19. Jakikolwiek sposób na wykonanie kodu DS z kasety?
- 20. haskell - jakikolwiek sposób na zrolowanie swojej własnej grupy pragmatów językowych?
- 21. Aplikacja Facebook: jakikolwiek sposób na uruchomienie aplikacji bez SSL?
- 22. Jakikolwiek sposób na obsługę/shim formularza formularza przycisku w IE10?
- 23. Jakikolwiek sposób modyfikowania szpiegów Jasmine na podstawie argumentów?
- 24. ActiveRecord :: Powiązanie, jakikolwiek sposób na usunięcie istniejącego limitu i przesunięcia?
- 25. Jakikolwiek sposób przekształcić styl bloku/CSS na wbudowany styl CSS?
- 26. Jakikolwiek sposób na odwzorowanie enkodera etykiet w pandach Pythona?
- 27. Jakikolwiek sposób przyspieszyć d3.csv na dużych plikach?
- 28. Jakikolwiek sposób na zachowanie zmiennych instancji między testami phpunit?
- 29. Jakikolwiek sposób na ponowne użycie powiązań w WPF?
- 30. Jakikolwiek sposób na dostęp do funkcji zainstalowanej przez makeActiveBinding?
@sll: odwołanie, które wskażesz, jest już nieaktualne, idź rysunek. – michael
Zaktualizowany link, zobacz [jak uzyskać liczbę wierszy przy użyciu SqlDataReader w C#] (http://stackoverflow.com/q/1383315/485076) – sll