Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: .NET Framework
.NET
.NET Standard
Sorgu sonucu üzerinden sayfalama, bir sorgunun sonuçlarını daha küçük veri alt kümelerinde veya sayfalarda döndürme işlemidir. Bu, sonuçları kullanıcıya küçük, yönetimi kolay öbekler halinde görüntülemeye yönelik yaygın bir uygulamadır.
SqlDataAdapter yöntemi aşırı yüklemeleri aracılığıyla yalnızca bir veri sayfası döndürme olanağı sağlar. Ancak, DataAdapter yalnızca istenen kayıtlarla DataTable veya DataSet'yi doldursa da, sorgunun tamamını döndürmek için kaynaklar hala kullanılır; bu yüzden bu, büyük sorgu sonuçlarını sayfalandırmak için en iyi seçenek olmayabilir.
Kaynakları kullanarak sorgunun tamamını döndürmeden bir veri kaynağından veri sayfası döndürmek için sorgunuz için döndürülen satırları yalnızca gerekli olanlara azaltan ek ölçütler belirtin.
Veri sayfası döndürmek için yöntemini kullanmak Fill için, veri sayfasındaki ilk kayıt için bir startRecord parametresi ve veri sayfasındaki kayıt sayısı için bir maxRecords parametresi belirtin.
Example
Aşağıdaki kod örneğinde, sayfa boyutunun Fill beş kayıt olduğu sorgu sonucunun ilk sayfasını döndürmek için yönteminin nasıl kullanılacağı gösterilmektedir.
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");
Önceki örnekte DataSet yalnızca beş kayıtla doldurulmuş, ancak Orders tablosunun tamamı döndürülmüştür.
DataSet'i aynı olan beş kayıtla doldurmak, ancak yalnızca beş kayıt döndürmek için, aşağıdaki kod örneğinde olduğu gibi SQL deyiminizdeki TOP ve WHERE yan tümcelerini kullanın.
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");
Uyarı
Sorgu sonuçlarını bu şekilde sayfalandırırken, satırları sıralayan unique identifier değerini koruyarak benzersiz kimliği komuta geçirmeniz ve ardından bir sonraki kayıt sayfasını döndürmeniz gerekir, aşağıdaki kod örneğinde gösterildiği gibi.
string lastRecord =
dataSet.Tables["Orders"].Rows[pageSize - 1]["OrderID"].ToString();
next page of records
startRecord ve maxRecords parametrelerini alan Fill yönteminin aşırı yüklemesini kullanarak, mevcut kayıt dizinini sayfa boyutuna göre artırın ve tabloyu doldurun.
Uyarı
DataSet'e yalnızca bir kayıt sayfası eklense bile veritabanı sunucusunun sorgu sonuçlarının tamamını döndürdüğünü unutmayın.
Aşağıdaki kod örneğinde, tablo satırları bir sonraki veri sayfasıyla doldurulmadan önce temizlenir. Veritabanı sunucusuna yönelik yolculukları azaltmak için yerel önbellekte belirli sayıda döndürülen satırı korumak isteyebilirsiniz.
currentIndex += pageSize;
// Assumes that dataset and adapter are valid objects.
dataSet.Tables["Orders"].Rows.Clear();
adapter.Fill(dataSet, currentIndex, pageSize, "Orders");
Veritabanı sunucusunun sorgunun tamamını döndürmesine gerek kalmadan sonraki kayıt sayfasını döndürmek için SELECT deyimine kısıtlayıcı ölçütler belirtin. Yukarıdaki örnek döndürülen son kaydı koruduğundan, aşağıdaki kod örneğinde gösterildiği gibi sorgu için bir başlangıç noktası belirtmek üzere WHERE yan tümcesinde kullanabilirsiniz.
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");
Ayrıca bakınız
- Veri Adaptörleri (DataAdapters) ve Veri Okuyucular (DataReaders)
- SQL Server için Microsoft ADO.NET