Zum Inhalt springen

SQL Pagination mit JDBC


Gast JulianB

Empfohlene Beiträge

Hallo Zusammen,

ich suche nach einer Möglichkeit Datensätze aus einer Datenbank, unabhängig vom benutzten DBMS, "portioniert" abzufragen.

Ich möchte also nicht die klassische Pagination nutzen, wo alle Datensätze erst einmal in den Speicher geladen werden und dann im UI aufgeteilt werden. Sondern bei sagen wir mal 1000 Datensätzen lediglich die ersten 100 aus der Datenbank holen, sollte der Benutzer mehr sehen wollen dann die nächsten 100 Datensätze usw.

Das Problem besteht für mich darin das ich die Datensätze pro Tabelle nicht global identifizieren kann, beispielsweise an einer vergebenen ID o.ä. Das gesamte System zu erklären dauert leider zu lange daher ist dieser Punkt als gegeben hinzunehmen. Zwar bieten mit PreparedStatements und ResultSets die Möglichkeit die Anzahl der zurückgebenen Datensätze auf n zu beschränken, aber ich habe keine Option um festzulegen: Gebe mir n Datensätze ab Position x. Was ich suche ist hier die Option "ab Position x".

Kurz zum Umfeld:

Ich entwickle ein Webfrontend unter Apache Wicket (Java) welches seine Daten im Hintergrund aus einer Datenbank zieht. Da hierbei mehrere DBMS unterstützt werden kann ich das leider nicht vom verwendeten SQL abhängig machen. Die Anzahl der Datensätze variiert von Kunde zu Kunde, so gibt es einige Systeme wo teilweise bis zu 500.000 Datensätze vorhanden sind. Um unnötigen Traffic zu sparen suche ich nun nach der oben beschriebenen Möglichkeit lediglich einen Teil der vorhandenen Datensätze abzurufen und den Rest, ebenfalls in kleinen Häppchen, auf Benutzeranfrage.

Ich hoffe es wird einigermaßen klar wonach ich suche und ihr könnt mir helfen.

Vielen Dank und liebe Grüße,

JulianB

Bearbeitet von JulianB
Link zu diesem Kommentar
Auf anderen Seiten teilen

Und genau da liegt ja leider das Problem, Statements wie OFFSET, LIMIT oder TOP kann ich leider nicht benutzen, es muss für MSSQL, Oracle, DB2, Informix, usw. funktionieren...

Bearbeitet von JulianB
Link zu diesem Kommentar
Auf anderen Seiten teilen

Wir haben letztens einen datenbankseitigen Pager gebaut. der das Suchergebnis zunächst in eine temporäre Tabelle kopiert, die wiederum via dynamischen SQL abgefragt wird.

Wenn du nicht die komplette Tabelle übertragen willst, bleibt dir nicht viel anderes übrig als die Seiten innerhalb der DB vorzubereiten.

Wie viele DBMS müssen unterstützt werden? Ein DB-neutrales Paging ist mir nicht bekannt.

edit: bei einer unbekannten Anzahl von Datenbanksystemen wird es nicht einfach.

Bearbeitet von Gooose
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...