# Preparestatement mit join



## steve77 (11. Apr 2008)

Hallo alle miteinander, ich ahbe folgendes problem:

Ich möchte mit preparestatements einen join durchführen von zwei tabellen.

Das sieht bei mir folgender massen aus:


```
String selectID=("SELECT * FROM  Tabelle1 p,  Tabelle2 s WHERE s.?= p.?");
	PreparedStatement stmt = connection.prepareStatement(selectID);
	 stmt.clearParameters();
	
	 stmt.setInt(1, this.selID);//ID von der tabelle 1
	ResultSet result = stmt.executeQuery();
	
	//System.out.println("vorhanden: " + result);
	if(result.next()){
				
	//int selectTabelle1 = result.getInt(1);
	int selectTabelle2 = result.getInt(1);
	System.out.print("Die antwort lautet: " + result);
....
```

Kann mir jemand sagen, ob das preparestatement so richtig ist, oder mir eventuell ein beispiel mit einem join schicken? 

Vielen dank!!

stefan


----------



## ARadauer (11. Apr 2008)

mhn das wird nicht funktionieren, warum willst du das eigentlich parameterisieren...?

? steht für einen wert und nicht für einen spaltennamen....

soweit ich weiß


----------



## steve77 (11. Apr 2008)

Es sieht folgendermassen aus:
Es gibt 2 tabellen mit ID's. Die ID von Tabelle 1 ist gleichzeitg fremdschlüssel für tabelle 2.
Es sollen zwei ID's miteinander vergleichen werden. Wenn diese beiden id's übereinstimmen dann wird ein anderer wert aus der Tabelle 2 gehollt (spielt hier aber erstmal keine rolle), wenn die ID's nicht übereinstimmen, ist der Wert nicht vorhanden und soll angelegt werden.
Mein problem ist, das ich nicht weiss wie ich den join mit den preparestatements hinbekomme??


----------



## SlaterB (11. Apr 2008)

welche Aufgabe hat denn deiner Meinung nach das PreparedStatement bei der Sache?
wenn die Spalten nicht feststehen, kann doch die DB nichts vorbereiten, keinen Ausführungsplan erstellen oder ähnliches

gehts dir allein darum, später die ? mit Text zu füllen?
es kann doch nicht die Aufgabe der DB sein, deine Strings zu formatieren,
mach das bitte mit String.replace()/ reguläre Ausdrücke oder so oder einfach eine Hilfsoperation

getQueryX(Param 1, Param 2) {
return "Anfang"+1+" Mitte "+2+" Ende"; 
}

wenn du dann eine korrekte Query zusammengebaut hast,
dann darf JDBC was tun


----------



## steve77 (11. Apr 2008)

jo danke für den tipp, werd ich gleich mal ausprobieren


----------

