Neues select auf ein vorhandenes Resultset

Status
Nicht offen für weitere Antworten.
E

ente382

Gast
Hallo,

ich würde gerne auf ein resultset nochmal ein Select ausführen... Hier mal ein Bsp. zum Verständnis:
Also das is das was momentan im resultset steht:

ID Name
1 Peter
2 fred
3 Eumel

Ich würde gerne wissen, ob ich zum Bsp. sagen kann (ich weiß,dass es die select-Methode beim resultset nicht gibt):

rs.select("Select * where ID='1');

Ich würde das gerne benutzen um nicht nochma erneut die gleichen daten aus der datenbank holen zu müssen.
Ich weiß, dass es bei C# die Möglichkeit gibt, so etwas zu nutzen.
Hat einer von euch ne Idee?

Danke
 

Niki

Top Contributor
Ja speicher die Daten in eine HashMap mit der ID als key. Dann kannst du direkt darauf zugreifen:
Code:
Map result = new HashMap();

ResultSet rs = stmt.executeQuerey("select id, name from....");
while(rs.next()){
  result.put(rs.getString(id), rs.getString(name));
}
rs.close();
stmt.close();


//und dann kannst du darauf zugreifen:
String name = result.get("1");
if(name != null){
  //Datensatz ist in Ergebnismenge vorhanden
}
 
S

SlaterB

Gast
mit anderen Worten: einen direkten vollen SQL-Zugriff auf ein ResultSet gibts im Standard-JDBC nicht
 
G

Guest

Gast
coole sache :)
zwei weitere fragen:

Code:
Map result = new HashMap();

ResultSet rs = stmt.executeQuerey("select id, name from....");
while(rs.next()){
  result.put(rs.getString(id), rs.getString(name));
}
rs.close();
stmt.close();

Ist es möglich, bei Select * from.... alle Spalten der Abfrage ins result zu bekommen, weil ich die Spaltennamen bzw. die Anzahl der Spalten nicht vorher weiß? Also so in der Art:

Code:
 result.put(rs.getString(*));

und ist es hier:
Code:
//und dann kannst du darauf zugreifen:
String name = result.get("1");
if(name != null){
  //Datensatz ist in Ergebnismenge vorhanden
}
auch möglich mehrere IDs abzufragen?

Code:
String ids= "1,2,4";
String name = result.get(ids);
 

Niki

Top Contributor
Du kannst schon alle Spalten in die Map stecken. Du musst aber vorher wissen welcher Typ das ist, das kannst du aber über das ResultSetMetaData Objekt ermittelnt (getColumnType()); Dann kannst du dir ein Object[] basteln und dieses als value in die Map geben.
Du kannst bei der Map nur mehrere IDs einzeln abfragen. Du kannst dir aber eine Methode basteln die das gewünschte macht:
Code:
public List<String> getSubResultSet(String[] ids, Map rs){
  List<String> erg = new ArrayList<String>();
  for(Map.Entry e : rs.entrySet()){
    for(String id : ids){
      if(e.getKey().equals(id)){
        erg.add(e.getValue());
        break;
      }
    }
  }
  return erg;
}
 
E

ente382

Gast
Wozu ich das verwenden wollte?
Um mir ein großes Select auf die datenbank zu sparen.
Also ich mache ein Select, verwende das Ergebnis (1.Ergebnis) und bräuchte noch ein Select aufs Ergebnis (2.Ergebnis) und verwende dies dann wieder...
Einfacherer Weg:
1.Select auf DB -> Auswertung
2.Select auf DB -> Auswertung
 

Niki

Top Contributor
Klüger ist es natürlich gleich ein POJO zu verwenden und mit den Daten aus der Datenbank zu füllen. Dazu musst du aber wissen welche Spalte auf welches Attribut gemappt werden muss. Da du aber geschrieben hast du weißt nicht wieviele Spalten als Ergebnismenge kommen tut man sich da natürlich schwer. Vielleicht solltest du das ganze Design nochmal ein wenig überdenken. Vielleicht findet sich ja eine saubere Lösung
 
M

maki

Gast
ente382 hat gesagt.:
Wozu ich das verwenden wollte?
Um mir ein großes Select auf die datenbank zu sparen.
Also ich mache ein Select, verwende das Ergebnis (1.Ergebnis) und bräuchte noch ein Select aufs Ergebnis (2.Ergebnis) und verwende dies dann wieder...
Einfacherer Weg:
1.Select auf DB -> Auswertung
2.Select auf DB -> Auswertung
Gute OR Mapper machen das von Haus aus, ist sicherlich nicht trivial umzusetzen was du vorhast.
 
E

ente382

Gast
Hm,naja, ich glaub wenn ich POJOs noch verwenden würde, würde das den Umfang des doch eher kleinen Projektes sprengen.
Habe halt gedacht es gibt einen ähnlich leicht zu implementierenden Weg wie bei C#.
Egal, ich machs denn mit der einfacheren Lösung ;)
 
V

voidee

Gast
Ein ResultSet ist der technische Begriff auf das endgültige Ergebnis einer SQL-Abfrage. Wenn man auf das Ergebnis einer SQL-Abfrage nochmals mit SQL zugreifen möchte (sprich: SELECT), dann muss man die SELECT-Statements schachteln. Wenn das Ergebnis an ein RT-System (z.B. Java) ausgeliefert ist, kann man das Ergebnis abfragen, aber kein DB-Select mehr darauf ausführen.

Beispiel:

Code:
SELECT name FROM emp;

Liefert Namen.

Alle Namen die mit E beginnen: in Java muss man mit Java Mittel alle Zeilen des ResultSets durchgehen und prüfen, ob de erste Buchstabe mit "E" beginnt. So etwas wie SELECT gibt es in Java nicht!

Also sollte man dass die DB machen, die kann das eh besser:

Code:
SELECT names.name FROM (SELECT name FROM emp) names
WHERE upper(name) like 'E%'
Da holt die DB im inneren Select erst alle Namen, und im äußeren werden nur die Datensätze, bei denen der Name mit einem E beginnt (unabhängig von der Schreibweise) selektiert. Hier könnte man von einem Select auf ein ResultSet sprechen, ist es aber nicht. Es ist ein Select auf eine mit Select eingeschränkte Menge (äußeres Select auf inneres Select, wobei das innere Select ("SELECT name FROM emp") so etwas wie eine virtuelle oder temporäre Tabelle ist. Diese innere Darstellung wird aber nach außen hin nie sichtbar, deshalb ist es kein ResultSet, denn das ResultSet ist das Endergebnis.
[/code]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P MySQL- Neues Passwort Datenbankprogrammierung 1
M Feedback für neues Buch über "Java und Datenbanken" erwünscht Datenbankprogrammierung 8
E Herangehensweise Neues Projekt mit Netbeans / HSQLDB / JPA Datenbankprogrammierung 3
P Neues Attribut in Entity-Klasse Datenbankprogrammierung 3
S Neues aus der JDBC-ODBC-Hölle Datenbankprogrammierung 3
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
OnDemand Select * from bringt keine Rückgabe Datenbankprogrammierung 49
OnDemand Select vs Update ins blaue, was ist teurer? Datenbankprogrammierung 11
M JPA: select all mit unterschiedlichem Tablename Datenbankprogrammierung 2
A MySQL Select und Insert in Java Datenbankprogrammierung 15
J JPA: Wie sieht der select aus? Datenbankprogrammierung 2
D geänderte SELECT Abfragen Datenbankprogrammierung 15
N SQLite Hibernate und Aufruf von Funktion SELECT last_insert_rowid() Datenbankprogrammierung 2
T sqlite select Datenbankprogrammierung 12
D Oracle NullPointerException bei select mit Null Values Datenbankprogrammierung 5
F MySQL Was bedeuten die Einzelnen Zeichen in Select Querrys? Datenbankprogrammierung 1
J SQL SELECT mit einem Array Datenbankprogrammierung 1
J SELECT Abfrage/Suche Datenbankprogrammierung 4
E Kann man in einer if-Bedingung auch SELECT-Statements überprüfen? Datenbankprogrammierung 23
M SQL-Exception trotz funktionierendem SELECT Datenbankprogrammierung 4
U PostgreSQL SELECT Statement Datenbankprogrammierung 5
L Select Anweisung wird falsch interpretiert Datenbankprogrammierung 3
C HSQLDB Platzhalter in SELECT Datenbankprogrammierung 6
I SELECT bei Datenbankverbindung Datenbankprogrammierung 6
C MySQL JPA - namedQuery (SELECT) -getResultList() - liefert falsches Ergebnis Datenbankprogrammierung 1
S select: alle ergebnisse ermitteln Datenbankprogrammierung 5
G SQLite SQLite Select für View vereinfachen/optimieren Datenbankprogrammierung 4
C SQL-Statement SELECT über 3 Tabellen Datenbankprogrammierung 5
H HSQLDB insert .... values("test1",select test2 from foo) Datenbankprogrammierung 2
D JDBC insert mit select abfrage Datenbankprogrammierung 5
W SELECT oder Programm-Logik Datenbankprogrammierung 10
J Hibernate Select auf Parameterliste Datenbankprogrammierung 3
T MySQL Dynamisch Suchen Select Datenbankprogrammierung 4
D ArrayList in Select Datenbankprogrammierung 12
N Select mit join Datenbankprogrammierung 3
F Oracle select sum() join select sum() Datenbankprogrammierung 9
B SELECT ja - INSERT nein (MySQL) Datenbankprogrammierung 3
R Oracle Performance bei SELECT mit vielen Reihen Datenbankprogrammierung 5
T MySQL Db select * und Insert schlagen fehl Datenbankprogrammierung 2
I Select-Statement optimieren Datenbankprogrammierung 14
M Variable in SQL SELECT * FROM ... WHERE mithilfe von PreparedStatement benutzen? Datenbankprogrammierung 28
R Derby/JavaDB Möglichkeit von einem Random Select! Datenbankprogrammierung 6
B Mehrfachschachtelung SELECT Datenbankprogrammierung 2
T MySQL Select: Zusammenfassen von Daten und bilden von Durchschnitt? Datenbankprogrammierung 4
GianaSisters MySQL Datenbank Select error Datenbankprogrammierung 5
R Select Statement als temporärer Table Datenbankprogrammierung 7
R Derby/JavaDB Select Statement Where bedingung will nicht ganz! Datenbankprogrammierung 4
R Derby/JavaDB Select TOP Statement geht nicht Datenbankprogrammierung 3
S MySQL Problem mit SELECT bzw encoding Datenbankprogrammierung 4
B HSQLDB Probleme mit Select...Where Abfrage Datenbankprogrammierung 16
F wie funktioniert if Statement in SELECT? Datenbankprogrammierung 2
J [Hibernate] Select Statement Datenbankprogrammierung 4
A SQLite SELECT von ungleichen Spaltenpaaren Datenbankprogrammierung 10
Eldorado MySQL SELECT mit GROUP BY und INNER JOIN Datenbankprogrammierung 2
M Hibernate JPQL SELECT optional? Datenbankprogrammierung 2
C Datenbank-Abfrage, if im Select Datenbankprogrammierung 9
G Aufruf von SELECT INTO Datenbankprogrammierung 8
B H2 PreparedStatement SELECT * FROM ? Datenbankprogrammierung 4
X Select Query auf Substring Datenbankprogrammierung 2
S Select eines bestimmten Datensatzes Datenbankprogrammierung 4
M Select * from mydaten where ... Datenbankprogrammierung 4
T Unerwartete Datenbankausgabe bei "select now()" (es wird ein .0 angehängt) Datenbankprogrammierung 5
M Probleme bei Select in Schleife Datenbankprogrammierung 7
G SELECT liefert leere Zeilen Datenbankprogrammierung 32
M SELECT longtext -> als String behandeln Datenbankprogrammierung 6
H Select in einem Select Datenbankprogrammierung 7
G Select- Abfrage Datenbankprogrammierung 19
S Insert mit Select Datenbankprogrammierung 6
G MSSQL Server SELECT Abfrage funktioniert nicht Datenbankprogrammierung 4
R SELECT aus hsqldb mit Parameter Datenbankprogrammierung 2
H Beim insert bekomme ich den Fehler missing select keyword Datenbankprogrammierung 2
A Problem mit einem Select-Befehl Datenbankprogrammierung 5
A SELECT-Anweisung liefert keine Datensätze zurück Datenbankprogrammierung 9
S Select über mehrere Datenbanksysteme Datenbankprogrammierung 14
P SELECT Datenbankprogrammierung 20
T select Abfrage in Java Integer speichern ? Datenbankprogrammierung 2
B fehler bei select befehl Datenbankprogrammierung 5
S Select von bis in DB2 Datenbankprogrammierung 8
S Select mit PreparedStatement Datenbankprogrammierung 2
E Ein If und ein SELECT in Oracle? Datenbankprogrammierung 2
T Select Statement auf Relation Datenbankprogrammierung 3
S PostgreSQL SELECT/UPDATE etc. Datenbankprogrammierung 4
4 Probleme mit Select abfrage Datenbankprogrammierung 4
G Fehler in der select-Abfrage Datenbankprogrammierung 3
N SELECT: Datensatz sperren Datenbankprogrammierung 6
isowiz SELECT SUM() Ergebnis in Java abfragen Datenbankprogrammierung 6
T LIMIT In SELECT Anweisung Datenbankprogrammierung 4
R Select und Insert in Schleife - Problem mit ResultSet Datenbankprogrammierung 2
G SELECT Name= " " verhindern Datenbankprogrammierung 5
G Syntax für Select - Abfrage mit Variablen Datenbankprogrammierung 39
J SELECT-Statement Datenbankprogrammierung 4
R Select auf der Konsole ausgeben Datenbankprogrammierung 2
D brauche mal kurz hilfe bei einem select-stmt Datenbankprogrammierung 6
G Select-Abfragen sind sehr langsam Datenbankprogrammierung 7
D HSQLSB SELECT Datenbankprogrammierung 9

Ähnliche Java Themen

Neue Themen


Oben