kann ich ORDER übrigens nicht in der db-BYWie kann ich ResultSet in Java sortieren?
Antwort
Verschieben Sie die Daten aus dem ResultSet in die gewünschte Objektdarstellung und sortieren Sie die Daten dann genau wie alle anderen Daten an diesem Punkt.
Wenn Sie Collections.Sort verwenden, um Ihre Sortierung für ein komplexes Objekt durchzuführen, müssen Sie Comparator implementieren.
die Ergebnisse in eine List<YourResultType>
Extrakt und Collections.sort()
verwenden. Wenn Sie nur in einer "natürlichen" Reihenfolge sortieren müssen, implementieren Sie Comparable<T>
im Ergebnistyp selbst ... andernfalls implementieren Sie Comparator<T>
einmal pro Sortierreihenfolge und übergeben Sie eine Instanz des entsprechenden Komparators an Collections.sort()
.
wie lege ich es wieder in rs? Ich habe eine Menge Dinge, rs anrufend, und ich kann nicht ändern, dass ich rs brauche, um zu bleiben, wie es ist, aber sortierte – code511788465541441
@ user521180: Sie nicht. Redesign Ihrer Lösung Es ist schon schlimm genug, dass Sie die Datenbank nicht für einen der Jobs verwenden können, für die sie entworfen wurde ... –
Wie man es in RS zurücksetzt: Sie können ein CachedRowSet verwenden, das ResultSet implementiert. Das manuelle Einlesen der Einträge ist jedoch etwas archaisch. Es kann trotzdem getan werden. –
Sie tun ORDER BY
in der DB.
Sie sollten warum Sie können dies nicht tun. Wenn jemand fragte "Wie setze ich eine Schraube mit einem Hammer ein? Ich kann übrigens keinen Schraubenzieher benutzen", wäre es unverantwortlich, sie nicht davon zu überzeugen, dass der Schraubenzieher in erster Linie die richtige Lösung war.
Wenn Sie wirklich, wirklich kann nicht die Ergebnismenge nativ bestellen, haben Sie kein Glück. Es ist nur ein Stream von der Datenbank, also müssten Sie alles in eine temporäre List
lesen, diese Sammlung sortieren und dann von dort gehen. Für kleine Ergebnismengen ist dies wahrscheinlich kein Problem, aber für große Ergebnismengen dürfte dies die Effizienz stark beeinträchtigen.
Wie lege ich es wieder in rs, nachdem ich es in der Temp-Liste sortiert habe? – code511788465541441
Sie ** können nicht ** zurück in das 'ResultSet' setzen. Das ResultSet ist definitionsgemäß die Zeilen, die von Ihrer SELECT-Anweisung zurückgegeben werden * in der Reihenfolge, in der sie von der SELECT-Anweisung zurückgegeben werden *. Es klingt, als hätten Sie ein architektonisches Problem, da Sie dies nicht tun sollten. Sobald Sie es in Ihrer "Liste" haben, warum nicht weiter die Elemente direkt verwenden? –
Ein Grund, warum ich feststellen konnte, dass SQL ORDER BY nicht sortiert werden kann, ist, dass keine Datenbanken die natürliche Sortierung unterstützen. –
Es sieht so aus, als müssten Sie für die Implementierung der ResultSet-Schnittstelle mit einem benutzerdefinierten Objekt verantwortlich sein, das Ihnen die Funktionalität bietet, die Sie suchen .... sorry.
Dies kann in der Abfrage selbst gelöst werden. Sie bestellen nach einer berechneten Spalte. Ihre berechnete Spalte konvertiert den natürlichen Wert in einen Wert, der numerisch oder alphabetisch sortiert werden kann. Sie könnten eine "convert" -Funktion definieren und diese Funktion in der order by-Klausel aufrufen.
Auf einer bestimmten Ebene muss die Konvertierung von natürlich nach numerisch in Ihrem Code oder in der Datenbank geschehen. Ein Algorithmus ist ein Algorithmus, egal wo er läuft.
Wenn Ihre Datenbank keine Funktionen unterstützt, können Sie mit einer "case-Anweisung" bestellen. Sie können sich bei booleschen Überprüfungen in die Konvertierungslogik schleichen. Fuction ist die bessere Lösung. Aber die Lösung, nach der Sie suchen, ist ohne Zweifel möglich. – mike
Hier ist ein verrücktes Beispiel für SQLServer, das gerade Zahlen auf der Oberseite, Chancen auf der Unterseite sortiert. (nur als ein natürliches Sortierbeispiel) Wählen Sie * von SomeTable Auftrag von Fall wenn (SomeNumber% 2) = 0 dann 0 \t \t \t else 1 Ende – mike
Es ist möglich, es vor dem Ausführen der Abfrage in der Datenbank zu sortieren und dann in resultSet zu speichern.
SELECT * FROM tableName ORDER BY columnName ASC
Ist so etwas wie dieses, die Sie wollen?
- 1. Wie kann ich ein Java ResultSet visuell anzeigen?
- 2. ResultSet in Java
- 3. Wie kann ich ein JSONArray in JAVA sortieren
- 4. Wie kann ich die Schlüssel einer Map in Java sortieren?
- 5. getDateTime von ResultSet java
- 6. Java ResultSet getString Seltsamkeit?
- 7. Wie kann ich ObservableCollection sortieren?
- 8. Wie kann ich ExpandableListview sortieren?
- 9. Problem mit SQL, ResultSet in Java
- 10. Wie kann ich ein JDBC ResultSet als ArrayList abrufen?
- 11. Wie kann ich Daten in Perl sortieren?
- 12. Wie kann ich vermeiden, dass ResultSet eine geschlossene Ausnahme in Java ist?
- 13. Vollständige Zeilen in Java lesen ResultSet
- 14. Speichern mehrerer Werte/resultset in Java Bean
- 15. Resultset funktioniert nicht in DAO mysql Java
- 16. Überprüfen, ob ResultSet leer ist in Java
- 17. Java JDBC First() in ResultSet funktioniert nicht?
- 18. Wie man resultset vom Web Service in Java zurückgibt
- 19. Wie lese ich in JDBC einen möglichen Nulldoppelwert von resultSet?
- 20. Wie kann ich meine Linq-Liste sortieren?
- 21. Wie kann ich Feldsets über jquery sortieren?
- 22. Wie kann ich mein Array alphabetisch sortieren?
- 23. Wie kann ich ein ES6 `Set` sortieren?
- 24. Sortieren eines XML in Java
- 25. Java ResultSet, mit MAX SQL-Funktion
- 26. Sortieren einer Datenstruktur in Java
- 27. get ResultSet in JTxtField
- 28. Java-Ruhezustand konnte ResultSet beim Versuch, Entität
- 29. Sortieren nach Index in Java
- 30. So drucken Sie einen Nutzlasttext aus resultset in Java
1. Wie groß ist der Datensatz? 2. Warum ist 'ORDER BY' keine Option? – NPE