SQL Abfrage

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Ich programiere gerad ein JSP und brauche eine SQL Abfrage.
Diese soll mit alle Orte auf einer Tabelle holen und ausgeben... Folgendes hatte ich mir da gedacht (funktioniert aber leider nicht).


Code:
public String getResultSpalte() throws SQLException {
        result   =rs.getObject(i).toString();
        return result;
   }

"i" fängt dabei halt bei 1 an und wird so lange hochgezählt bis es keine Einträge mehr in de rTabelle gibt. Das funktioniert aber irgendwie nicht, wenn dort eine 2 drin steht kommt eine "OutofBounds" Exception.

woran liegt das?
Wie hole ich mir mehrere Ergebnisse aus einer Tabelle ?

DANKE
 

mimo

Aktives Mitglied
Erstmal was ist denn ???

Dann wie sieht es denn mit dem Resultset aus, da hast du doch alle Werte + Metadaten. Damit kannst du dir dann alles basteln was du willst.

Gruß

MIMO
 

Niki

Top Contributor
mit ResultSet#get[irgendwas] bekommst du den Spalteninhalt der Zeile, in der sich der Cursor gerade befindet. Probier mal das:

Code:
ResultSet rs = stmt.executeQuery("....");
while(rs.next()){
  System.out.println(rs.getString(1));
}

nicht vergessen ResultSet und Statement zu schließen, da diese Ressourcen verbrauchen.
 
G

Gast

Gast
Das ist schonmal gut doch rufe ich das über so auf:

suche.jsp

for(int i=0; i < 2; i++){
SQL.setQuery("SELECT DISTINCT ort FROM job_jobstudenten");
out.println("<option selected>"+SQL.getResultSpalte()+"</option>");
}


und in einer anderen Datei ist das mit dem SQL, also:

public String getResultSpalte() throws SQLException {
while(rs.next()){
result = (rs.getString(1));
}
return result;
}


Er gibt mir dann also immer nur das letzte result aus und nicht auch die davor, wie kann ich das lösen?

DANKE schonmal
 

Niki

Top Contributor
Dann darfst du keinen String sondern eine List als return definieren:
Code:
public List<String> getResultSpalte() throws SQLException {
  List<String> erg = new ArrayList<String>();
  while(rs.next()){
    erg.add(rs.getString(1));
  }
  return erg;
}
 
G

Gast

Gast
Stimmt, hört sich gut an.
Doch wenn ich das mache bekomme ich en Fehler:

The Typ of List is not generic; it connat be paramatized with arguments <String>

Hmmm, woran leigt das nun schon wieder ?
Danke Niki...
 
G

Gast

Gast
Hab das nun mal mit einer LinkedList gemacht, dann geht es :)

Nur wie rufe ich nun immer die einzelen Einträge der Liste ab, ich bekomme jetz die ganzen Einträge mit Komma getrennt als aus gabe ...
 

Niki

Top Contributor
mit List#get(int index) kannst du ein bestimmtes Element ansprechen.
Über jedes Element der Liste iterieren:
Code:
for(int i = 0; i < l.size(); i++){
  System.out.println(l.get(i));
}

//oder ab Java5
for(String s : l){
  System.out.println(s);
}

//oder vor Java5
for(Iterator iter = l.iterator(); iter.hasNext();){
  String s = (String)iter.next();
}
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben