# Als Rückgebewert eine Liste von Werten?



## steve77 (24. Apr 2008)

Hallo alle miteinander. Ich habe folgendes vor. Ich will aus einer Datenbank, die eine Spalte namens "Zahlen" besitzt (und natürlich noch weitere, die sind aber egal) mittels eines preparedstatements ein Intervall von Zahlen auslesen. Ich habe bis jetzt folgendes gemacht: (das Preparedstatement funktioniert!)


```
public List<String> selectNo(String intervall) {
		String betweenselectedNo = null;
		List<String> listbetweenselectedNo = null;
		try {
			String selectRange = "select  * FROM PCISECSTORE where SDS_TOKENCC between ? AND ?";
			PreparedStatement stmt = initConnection().prepareStatement(selectRange);
			stmt.clearParameters();
			stmt.setString(1, Range.getLow()); // unterer Bereich des Intervalls  
			stmt.setString(2, Range.getHigh());//oberer Bereich Intervall
			ResultSet result = stmt.executeQuery();
			
			if (result.next()) {
				betweenselectedNo = result.getString("Zahlen");			
			System.out.println("Intervall gefunden: " + betweenselectedNo);
		
			}
		} catch (SQLException sqle) {
			System.out.println("Fehler bei der Datenbankabfrage" + "abfrage:\n"
					+ sqle.getMessage());
		}
		return listbetweenselectedNo;
```

Mein Problem ist, das ich keine Liste von Werten zurückbekomme. Einen Eintrag aus der Tabelle gibt er mir zurück, ich will ja aber alle Werte  die in dem Intervall liegen haben. Ich denke mal, dass ich einen Iterator einbauen muss. Ich weiss aber leider nicht wie:

Hab es so versucht


```
public List<String> selectNo(String intervall) {
		String betweenselectedNo = null;
		List<String> listbetweenselectedNo = null;
		try {
			String selectRange = "select  * FROM PCISECSTORE where SDS_TOKENCC between ? AND ?";
			PreparedStatement stmt = initConnection().prepareStatement(selectRange);
			stmt.clearParameters();
			stmt.setString(1, Range.getLow()); // unterer Bereich des Intervalls  
			stmt.setString(2, Range.getHigh());//oberer Bereich Intervall
			ResultSet result = stmt.executeQuery();
			
			
			
betweenselectedCCNo = result.getString("Zahlen");

System.out.println("Intervall gefunden: " + betweenselectedNo);
		
			listbetweenselectedNo.add(betweenselectedNo);
			
			Iterator<String> iter = listbetweenselectedNo.iterator();
			
			
			while(iter.hasNext()){
				
			String nextmaskedNo = iter.next();
			
			System.out.println("nächste maskedCCNo: " + nextmaskedCCNo);
//						
			}
		} catch (SQLException sqle) {
			System.out.println("Fehler bei der Datenbankabfrage" + "abfrage:\n"
					+ sqle.getMessage());
		}
		return listbetweenselectedNo;
```


Klappt leider nicht. Hilfe!!!!


Gruß

Stefan


----------



## SlaterB (24. Apr 2008)

listbetweenselectedNo ist immer null, das ist schlecht,
jedes add wird zu einer Exception führen

--------


wenn du ein ResultSet mit mehreren Werten hast, dann musst du es mit einer Schleife durchlaufen, 
in deinem zweiten Beispiel rufst du nicht einmal result.next() vor dem ersten Zugriff auf wie in Beispiel 1


----------



## steve77 (24. Apr 2008)

Das hört sich logisch an, wie durchlaufe ich den das Resultset? Mit einem iterator funktioniert das nicht, oder?


----------



## steve77 (24. Apr 2008)

hat sich schon erledigt, while statt if und es klappt


----------

