Benutzerspezifisches Paging mit SQL Server 2005 implementieren

In den vorausgegangenen Artikeln wurden die Grundlagen der Verwendung des ListView-Steuerelements besprochen und erklärt, wie es sich mit dem DataPager-Steuerelement verbinden lässt. In diesem Betrag geht es nun darum, wie man diese Steuerelemente mit einem SQL-Server-2005-Backend verwendet, um eine benutzerspezifische, seitenweise Anzeige von Daten (Paging) zu implementieren, bei der nur eine Teilmenge der Daten abgerufen wird.

Wann werden Daten geladen?

Standardmäßig rufen .NET-Datenkomponenten wie ListView und GridView sämtliche Ergebnisse einer Anfrage ab, wenn Daten zur Anzeige auf einer Seite geladen werden. Besser ist es jedoch, nur die Daten zu laden, die auf der Seite tatsächlich angezeigt werden. Wenn der Benutzer dann zu einer anderen Seite navigiert, wird sie von der Backend-Datenquelle geladen und dargestellt.

Dadurch ist mehr Kommunikation zwischen der Applikation und der Datenbank erforderlich. Aber das ist ein geringer Preis dafür, dass die ressourcenintensive Arbeit, ein komplettes Datenset für jede Seite zu laden, vermieden wird.

Hinweis: Dieses Verfahren ist nur bei größeren Datenmengen effizienter.

Datenteilmengen mittels SQL Server 2005 erzeugen

SQL Server 2005 vereinfacht das Abrufen von Teilmengen einer Datenquelle mit Hilfe der Funktion T-SQL-row_number. Diese Funktion ermöglicht es, eine Teilmenge von Anfrageergebnissen auszugeben. Ein Partitionieren und Sortieren nach Klauseln der row_number-Funktion stellt alles bereit, was man dafür braucht. Die Partitionierung wird über die Over-Klausel erzielt. Sie legt eine Partitionierung und Sortierung des Zwischenergebnis-Sets fest, bevor die row_number-Funktion angewendet wird.

Das Ergebnis der Anwendung der row_number-Funktion wird in eine Unterabfrage eingeschlossen, die eine temporär benannte Ergebnismenge ausgibt. Die benötigten Daten werden dann dieser temporären Ergebnismenge entnommen. Zur Veranschaulichung wird hier eine einfache Datenbank mit dem Namen „Test“ verwendet. Sie enthält eine Tabelle namens „People“, die mit folgendem T-SQL erzeugt wurde:

Der nächste T-SQL-Ausschnitt gibt durch Verwendung der row_number-Funktion eine Gruppe von fünf Datensätzen aus der People-Tabelle aus. Die temporäre Tabelle wird innerhalb der Unterabfrage mit dem Namen „PeopleRecords“ versehen. Die row_number-Funktion nummeriert die Zeilen in der Unterabfrage gemäß der ORDER-BY-Klausel. Die äußere oder Hauptabfrage wählt die benötigten Datensätze mittels einer WHERE-Klausel aus, die auf die Unterabfrage angewendet wird.

Die Ausgabe liefert fünf Datensätze, weil die Anfangsnummer (3) und die Endnummer (7) der Datensätze im Ergebnis-Set enthalten sind. Die Zeilen werden nach ihrer Stelle in der ORDER-BY-Klausel der Unterabfrage nummeriert, die die Datensätze nach dem Nachnamen sortiert. Eine ASP.NET-Applikation kann diese Funktion von SQL Server 2005 verwenden, um große Datenmengen effizient durchzublättern.

Page: 1 2 3 4

ZDNet.de Redaktion

Recent Posts

Gefahren im Foxit PDF-Reader

Check Point warnt vor offener Schwachstelle, die derzeit von Hackern für Phishing ausgenutzt wird.

1 Tag ago

Bitdefender entdeckt Sicherheitslücken in Überwachungskameras

Video-Babyphones sind ebenfalls betroffen. Cyberkriminelle nehmen vermehrt IoT-Hardware ins Visier.

1 Tag ago

Top-Malware in Deutschland: CloudEye zurück an der Spitze

Der Downloader hat hierzulande im April einen Anteil von 18,58 Prozent. Im Bereich Ransomware ist…

1 Tag ago

Podcast: „Die Zero Trust-Architektur ist gekommen, um zu bleiben“

Unternehmen greifen von überall aus auf die Cloud und Applikationen zu. Dementsprechend reicht das Burg-Prinzip…

2 Tagen ago

Google schließt weitere Zero-Day-Lücke in Chrome

Hacker nutzen eine jetzt gepatchte Schwachstelle im Google-Browser bereits aktiv aus. Die neue Chrome-Version stopft…

2 Tagen ago

Hacker greifen Zero-Day-Lücke in Windows mit Banking-Trojaner QakBot an

Microsoft bietet seit Anfang der Woche einen Patch für die Lücke. Kaspersky-Forscher gehen davon aus,…

2 Tagen ago