View Full Version : Paging von Daten
Hallo zusammmen,
hier mal eine Frage an die Datenbankprofis:
In einer Webanwendung soll ein komfortabler Suchscreen
realisiert werden. Z.B.
select * from kunde where ort like 'HA%'
oder
select * from kunde where tel like '021%'
Die Parameter etc. gehen an die Applikation und
es wird der SQL ausgeführt. Die Daten werden als
XML Datei an den Browser zurückgesendet.
Jetzt kann das Ergebnis 1-nnnnnnnn Sätze ergeben.
Im Webclient sollen über eine Pagingfunktion
nur 20 Datensätze pro Screen angezeigt werden. Der User
kann mit den Vor, Zurück, Top, Bot Buttons blättern.
Gibt es eine Möglichkeit ein Resultset im System
vorzuhalten oder dynamisch von einem Serverjob zu
lesen ?
Es macht keinen Sinn das gesamte Ergebnis an den Browser
zu senden.
Gruß
Michael
ADO.NET kann das automatisch ;).
Ansonsten musst du das wohl programmieren.
Leider unterstützt die DB2/400 keine Klauseln wie "skip n rows", es gibt nur "fetch first n rows".
Vielleicht hast du ja auch ein Framework wie ADO.NET, dass Paging automatisch unterstützt.
... wenns Java ist (oder wäre) können ORM Frameworks wie Hibernate sowas normalerweise. Ansonsten kommts primär darauf an was der Client (aus Datenbanksicht) kann, der Datenbank Server kann da wenig machen.
@Baldur: scrollable Cursor kann man schon relativ positionieren, Problem ist halt, dass das immer schmutziger wird (eingefügte, gelöschte Sätze!)
D*B
Hallo zusammmen,
hier mal eine Frage an die Datenbankprofis:
In einer Webanwendung soll ein komfortabler Suchscreen
realisiert werden. Z.B.
select * from kunde where ort like 'HA%'
oder
select * from kunde where tel like '021%'
Die Parameter etc. gehen an die Applikation und
es wird der SQL ausgeführt. Die Daten werden als
XML Datei an den Browser zurückgesendet.
Jetzt kann das Ergebnis 1-nnnnnnnn Sätze ergeben.
Im Webclient sollen über eine Pagingfunktion
nur 20 Datensätze pro Screen angezeigt werden. Der User
kann mit den Vor, Zurück, Top, Bot Buttons blättern.
Gibt es eine Möglichkeit ein Resultset im System
vorzuhalten oder dynamisch von einem Serverjob zu
lesen ?
Es macht keinen Sinn das gesamte Ergebnis an den Browser
zu senden.
Gruß
Michael
Dazu bedarf es doch eines serverseitigen Cursors.
Ich weiß allerdings nicht ob Java so was kann.
Bei ADO.NET ist das leider abgeschafft, man kann nur alle Daten in den Speicher laden oder arbeitet eben mit Linq/Linq to Objects.
Dies setzt allerdings einen Single-Primary-Key (also nur 1 Feld) voraus, sodass eben Aufsetzpunkte verwendet werden können.
... ein ResultSet ist üblicherweise als Server seitiger Cursor implementiert und man könnte auch in einem separaten Thread einen pre Fetch implemnetieren - eleganter ist natürlich ein gutes ORM Framework
D*B
Dazu bedarf es doch eines serverseitigen Cursors.
Ich weiß allerdings nicht ob Java so was kann.
Bei ADO.NET ist das leider abgeschafft, man kann nur alle Daten in den Speicher laden oder arbeitet eben mit Linq/Linq to Objects.
Dies setzt allerdings einen Single-Primary-Key (also nur 1 Feld) voraus, sodass eben Aufsetzpunkte verwendet werden können.
Hallo,
danke für die Antworten.
Jetzt muss ich mich mal outen und Fragen
Was ist denn ein ORM Framework ?
Gruß
Michael
... ein Object Relational Mapper. Da werden (Java) Objekte in einer XML Konfiguration in der Form beschrieben, dass man mitteilt welche Eigenschafte wo in der Datenbank zu finden sind und welche (Schlüssel) Beziehungen bestehen. Wenn man dann eines der beschriebenen Objekte (oder eine Menge davon) erzeugt, wird das automatisch aus der Datenbank geholt und bei einer Save Operation, weiß der Mapper was geändert ist und schreibt das weg. Das Ganze dann inklusive caching, Transaktions Sicherheit, pre fetch und lazy fetch. Einer der Vertreter ist Hibernate (Open Source).
D*B
Hallo,
danke für die Antworten.
Jetzt muss ich mich mal outen und Fragen
Was ist denn ein ORM Framework ?
Gruß
Michael
Wobei ich festgestellt habe, dass die meisten dieser Frameworks immer nur mit einem 1-Feld-Unique-Key (Sequence, Identity) und insbesonders bei referential integrity nicht mit unseren Mehr-Feld-Beziehungen zurecht kommen.
... kan ich für Hibernate nicht bestätigen...
Wobei ich festgestellt habe, dass die meisten dieser Frameworks immer nur mit einem 1-Feld-Unique-Key (Sequence, Identity) und insbesonders bei referential integrity nicht mit unseren Mehr-Feld-Beziehungen zurecht kommen.
Okay,
danke für die Information. Werde ich mal im Kopf behalten.
Ist aber im Moment nicht verwendbar.
Ich komme vom Flash Builder Client der über
den HTTP ein PHP Request absetzt.
Vielen Dank an alle
Gruß
Michael