Gibt es eine portable Möglichkeit zu haben, "WÄHLEN Sie ZUERST 10 * FROM T" semantische?
Möchte ich zum Lesen von Daten in Blöcken von sagen wir 10k Datensätzen aus einer Datenbank.
Fand ich Ergebnis Grenzen auf wikipedia und es scheint offensichtlich, dass dies nicht geschieht mit sql in einer tragbaren Weise.
Ein anderer Ansatz könnte sein, JdbcTemplate - Sie bietet zahlreiche Methoden zum Abfragen, aber wie konnte ich entscheiden, dass genug Zeilen, die gelesen wurden. Durch die Rückrufe wie RowMapper und ResultSetExtractor es kann nicht angegeben werden, dass genügend Daten gelesen wurden.
EDIT: ich war auf der Suche nach einer Lösung für JdbcTemplate
Diese post empfiehlt setMaxRows das hatte ich übersehen.
InformationsquelleAutor stacker | 2010-08-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Greifen Ruhezustand oder JPA. Beide sind vertraut mit verschiedenen Datenbank-Dialekte und Griff die böse DB Besonderheiten unter die Hauben transparent.
In Hibernate können Sie den Seitenumbruch mit
Kriterien#setFirstResult()
undKriterien#setMaxResults()
. E. g.In der PPV, die Sie tun können, ähnlich wie mit
Abfrage#setFirstResult()
undAbfrage#setMaxResults()
.Dies ist eine der Schönheiten von ORM. In MySql können Sie dies auch mit dem LIMIT-Befehl.
InformationsquelleAutor BalusC
Es ist ein ANSI-standard-syntax von SQL:2008:
...aber es ist nicht unterstützt, auf die meisten Datenbanken in dieser Zeit.
LIMIT
ist genug?Nun, das ist einfach verrückt zu sprechen =)
Hmmm. Eine andere übliche Weise durchgeführt werden, so selten wie sein off-standard.
InformationsquelleAutor OMG Ponies
Gibt es keinen portablen Weg, dies zu tun auf der Ebene von SQL, da verschiedene SQL-Engines verwenden eine unterschiedliche Syntax.
Verwenden Sie ein Datenbank-Abstraktions-Schicht, oder DBAL.
http://en.wikipedia.org/wiki/Database_abstraction_layer
http://jonasbandi.net/wiki/index.php/ORM_Solutions_for_Java
InformationsquelleAutor Sebastián Grignoli
Wenn Sie möchten, eine portable Art und Weise, Sie verschieben müssen, bis eine Abstraktionsebene, da es keine portable SQL-Weise(und nicht eine, die Datenbanken auch tatsächlich umzusetzen, sowieso) - und ORM-Mappern, wie e.g hibernate.
Wenn Sie brauchen raw JDBC, Sie müssen schreiben bestimmte SQL eache für bestimmte Datenbank - und das ist Häufig der Fall, jedenfalls, wie das schreiben 100% h von SQL ist ziemlich schwer in allen außer den trivialen Fällen.
Ist die Letzte Möglichkeit, um die Abfrage auszuführen, ohne Einschränkungen und genau Iteration über die 10 ersten Ergebnisse, die Sie erhalten zurück - obwohl dies nicht nutzen Sie die Datenbank-Funktionen und wäre sehr schlimm, wenn Ihre Abfrage-Ergebnisse in viele Zeilen.
InformationsquelleAutor nos
Nicht. Das ist, warum Datenbank-Abstraktions-Layern wie Hibernate enthält SQL Dialekte, wo Sie wählen den für Ihre Datenbank.
InformationsquelleAutor Thorbjørn Ravn Andersen