Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: .NET Framework
.NET
Standard
Stronicowanie wyników zapytania to proces zwracania wyników zapytania w mniejszych podzestawach danych lub stron. Jest to powszechna praktyka wyświetlania wyników użytkownikowi w małych fragmentach, które można łatwo zarządzać.
Obiekt SqlDataAdapter umożliwia zwracanie tylko strony danych poprzez przeciążenia metody Fill. Jednak może to nie być najlepszy wybór do przeglądania dużych zestawów wyników, ponieważ chociaż DataAdapter wypełnia obiekt docelowy DataTable lub DataSet tylko żądanymi rekordami, zasoby do zwrócenia całego zapytania są wciąż używane.
Aby zwrócić stronę danych ze źródła danych bez użycia zasobów w celu zwrócenia całego zapytania, określ dodatkowe kryteria zapytania, które zmniejszają liczbę wierszy zwracanych tylko do tych wymaganych.
Aby użyć Fill metody , aby zwrócić stronę danych, określ parametr startRecord , dla pierwszego rekordu na stronie danych i parametr maxRecords jako liczbę rekordów na stronie danych.
Example
Poniższy przykład kodu pokazuje, jak za pomocą metody Fill zwrócić pierwszą stronę wyników zapytania, gdzie rozmiar strony wynosi pięć rekordów.
int currentIndex = 0;
int pageSize = 5;
string orderSQL = "SELECT * FROM Orders ORDER BY OrderID";
// Assumes that connection is a valid SqlConnection object.
SqlDataAdapter adapter = new SqlDataAdapter(orderSQL, connection);
DataSet dataSet = new DataSet();
adapter.Fill(dataSet, currentIndex, pageSize, "Orders");
W poprzednim przykładzie zestaw danych jest wypełniony tylko pięcioma rekordami, ale zwracana jest cała tabela Orders . Aby wypełnić zestaw danych tymi samymi pięcioma rekordami, ale zwracać tylko pięć rekordów, użyj TOP klauzul i WHERE w instrukcji SQL, jak w poniższym przykładzie kodu.
int pageSize = 5;
string orderSQL = "SELECT TOP " + pageSize +
" * FROM Orders ORDER BY OrderID";
// Assumes that connection is a valid SqlConnection object.
SqlDataAdapter adapter = new SqlDataAdapter(orderSQL, connection);
DataSet dataSet = new DataSet();
adapter.Fill(dataSet, "Orders");
Uwaga / Notatka
Przy stronicowaniu wyników zapytania w ten sposób należy zachować unique identifier, który porządkuje wiersze, aby przekazać unikalny identyfikator do polecenia w celu zwrócenia następnej strony rekordów, jak pokazano w poniższym przykładzie kodu.
string lastRecord =
dataSet.Tables["Orders"].Rows[pageSize - 1]["OrderID"].ToString();
Aby przywrócić next page of records przy użyciu przeciążenia metody Fill, które przyjmuje parametry startRecord i maxRecords, zwiększ bieżący indeks rekordu o rozmiar strony i wypełnij tabelę.
Uwaga / Notatka
Pamiętaj, że serwer bazy danych zwraca wszystkie wyniki zapytania, mimo że do zestawu danych jest dodawana tylko jedna strona rekordów.
W poniższym przykładzie kodu wiersze tabeli są czyszczone przed wypełnieniem następnej strony danych. Możesz zachować pewną liczbę zwracanych wierszy w lokalnej pamięci podręcznej, aby zmniejszyć liczbę podróży do serwera bazy danych.
currentIndex += pageSize;
// Assumes that dataset and adapter are valid objects.
dataSet.Tables["Orders"].Rows.Clear();
adapter.Fill(dataSet, currentIndex, pageSize, "Orders");
Aby zwrócić następną stronę rekordów bez konieczności zwracania całego zapytania przez serwer bazy danych, określ restrykcyjne kryteria instrukcji SELECT. Ponieważ poprzedni przykład zachował ostatni zwrócony rekord, możesz użyć go w klauzuli WHERE, aby określić punkt początkowy zapytania, jak pokazano w poniższym przykładzie kodu.
orderSQL = "SELECT TOP " + pageSize +
" * FROM Orders WHERE OrderID > " + lastRecord + " ORDER BY OrderID";
adapter.SelectCommand.CommandText = orderSQL;
dataSet.Tables["Orders"].Rows.Clear();
adapter.Fill(dataSet, "Orders");
Zobacz także
- Adaptery danych i Czytniki danych
- Microsoft ADO.NET dla programu SQL Server