Moje pytanie jest, jak uzyskać liczbę wierszy zwracanych przez kwerendy przy użyciu SqlDataReader
w języku C#. Widziałem kilka odpowiedzi na ten temat, ale żadna nie była jasno zdefiniowana, z wyjątkiem tej, która stwierdza, że wykonuje pętlę z metodą Read()
i zwiększa licznik.Jak uzyskać liczbę wierszy przy użyciu SqlDataReader w C#
Mój problem polega na tym, że próbuję wypełnić tablicę wielowymiarową, przy czym pierwszym wierszem jest nazwa nagłówka kolumny, a każdy kolejny wiersz to dane wiersza.
Wiem, że mogę po prostu zrzucić rzeczy z listy kontrolnej i nie martwić się o to, ale dla własnego osobistego zbudowania i chciałbym również wyciągnąć dane do tablicy i jak tylko zechcę, i wyświetlić ją w różnych formatach.
Więc myślę, że nie może zrobić Read()
a następnie przyrost ++ sposób, ponieważ to oznacza, że będę musiał otworzyć Read()
a następnie otwórz Read()
ponownie, aby uzyskać ilość wierszy i następnie dane kolumn.
tylko mały przykład tego, co mówię:
int counter = 0;
while (sqlRead.Read())
{
//get rows
counter++
}
a następnie do pętli prowadzonym przez kolumny i pop
something.Read();
int dbFields = sqlRead.FieldCount;
for (int i = 0; i < dbFields; i++)
{
// do stuff to array
}
Henk ma rację: nie ma elementu DataReader, który pozwala uzyskać liczbę wierszy, ponieważ jest to czytnik tylko do przodu. Lepiej jest najpierw zdobyć liczenie, a następnie wykonać zapytanie, być może w zapytaniu wielowarstwowym, aby tylko raz trafić w bazę danych. – flipdoubt
Problem z wyspecjalizowanym licznikiem polega na tym, że istnieje możliwość, że liczba będzie różna od liczby zwróconych wierszy, ponieważ ktoś inny zmienił dane w sposób, który prowadzi do liczby zwróconych wierszy. –
Pete, masz rację, będzie to wymagało kosztownej izolacji IsolationLevel. –