# Ergebnis aus SQL Abfrage in Array speichern



## kingpin166 (25. Apr 2006)

Habe folgendes Problem.
Ich möchte meine Datenbank auslesen und zwar nur eine bestimmte Zeile (siehe Code). Diese Zeile, will ich dann Spalte für Spalte in einen Array vom Typ String speichern und die Methode liefert diesen String dann wieder zurück an eine andere Klasse...

Das Problem besteht darin, dass das Array allerdings nicht gefüllt wird. Und mit einem leeren Array bekomme ich nun einen Fehler in meiner anderen Klasse, die mit leeren Werten nicht klar kommt.


```
public String[] xml_query_job(int zeile)
	{
		String[] array = new String[count_jobs()];
		
		connect.verbinden();
		try {
		PreparedStatement select = connect.conn.prepareStatement("SELECT xcord,ycord,jobCountry,jobCompany FROM jobTable WHERE row = 'zeile'");  // Hab die Sachen mit Absicht auskommentiert
	    //select.setString(1,"xcord");
	    //select.setString(2,"ycord");
	    //select.setString(3,"jobCountry");
	    //select.setString(4,"jobCompany");  
	    
	    ResultSet rs =  select.executeQuery();
	    int i = 0;
	    while (rs.next())
	    {
	    	array[i] = rs.getString(i+1);
	    	i++;
	    }
	    
	    
	    select.close();
	    connect.conn.close();
	    System.out.println("Verbindung zur Datenbank geschlosse //xml_query");
	    System.out.println("Erster Wert im Array: "+array[0]);
	    
	    return array;
		}
		catch(SQLException e)
		{
			System.out.println("Fehler im Statement");
			return null ;
		}
	}
```


----------



## Kawa-Mike (26. Apr 2006)

while(rs.next()) holt eine neue Zeile aus dem Resultset.
Die einzelnen Felder kann man mit Namen oder mit Indizes ansprechen.
In der For-Schleife werden 4 Spalten gelesen und ins Array kopiert.


```
ResultSet rs =  select.executeQuery(); 
       int i = 0; 
       while (rs.next()) 
       { 
            for( int i=0; i < 4; i++){
              array[i] = rs.getString(i); 
            }
       }
```

sollte so gehen, ist aber nicht getestet.
Du kannst auch rs.getString("xcord") auf die Spalten zugreifen. Sind zwar ein paar Zeilen mehr, aber falls später einmal ein Spalte in der Tabelle hinzukommt, klappt es immernoch.


----------



## Kawa-Mike (26. Apr 2006)

int i = 0; 
über der while schleife ist dann überflüssig, da i in der for-Schleife definiert wird.


----------



## Kawa-Mike (26. Apr 2006)

bitte löschen, habe mich vertippt.


----------

