# JDBC PreparedStatement durchiterieren



## skuki (4. Dez 2015)

Hallo, 

ich würde gerne eine Möglichkeit haben durch ein preparedStatement durchzuiterieren.

Mein PreparedStatement sieht so aus: 

```
select k.knr AS Kundenummer, k.name AS Name,from Kunde k, AktKundendaten kd where kd.knr = Auftrag.knr AND k.rnr = ?
```

wie kann ich jetzt eine Schleife für die k.rnr schreiben wenn ich nicht weis wie groß rnr ist? 

Bei rnr handelt es sich um ein Integer Wert (Rechnungsnummer)


Vielen Dank


----------



## Joose (4. Dez 2015)

Über ein PreparedStatement kann man nicht iterieren.
Du kannst aber über die Ergebnismenge (ResultSet) itererieren, sobald du das PreparedStatement ausgeführt hast (execute()).

Was heißt du willst eine Schleife für "k.rnr" schreiben?
Willst du dein PreparedStatement für jede mögliche "rnr" ausführen?


----------



## skuki (4. Dez 2015)

Hallo, 

danke für deine Antwort.



Joose hat gesagt.:


> Willst du dein PreparedStatement für jede mögliche "rnr" ausführen?



Ja genau. Es soll für alle Rechnungsnummern dieses Query ausgeführt werden.


----------



## KaffeeFan (4. Dez 2015)

```
con = DriverManager.getConnection(....
String query = //dein statement
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);

while(rs.next())
{
}
```

Meinst du sowas?


----------



## skuki (4. Dez 2015)

So geht es leider nicht, da ich der Query per Angabe eine rnr übergeben muss. Daher habe ich ein preparedStatement zu verwenden. 

Dachte es gibt hier eine einfache Lösung die ich noch nicht kenne..


----------



## Joose (4. Dez 2015)

Einfachste Möglichkeit den Parameter einfach weglesen. Wenn du eh für alle Rechnungsnummern diese Query ausführen willst wäre es eben am einfachsten diese 1x zu tun und dann im Programm die Daten weiterzuverarbeiten.
Vorteil: Du führst nur ein Query aus was auch performanter ist

Natürlich eine andere Variante wäre davor mit einem SELECT alle Rechnungsnummern auszulesen und für jede dieser Rechnungsnummern (wie man über ein ResultSet iteriert hat dir KaffeeFan schon gezeigt) dann eben das andere Statement ausführen.


----------



## skuki (4. Dez 2015)

Ok, danke das Hilft!


----------

