# Platzhalter in WHERE Klausel



## Stefan_Wegener (12. Apr 2006)

Hallo zusammen, ich versuche gerade über eine JSP eine Datenbankabfrage zu starten. Im Code ist die DB-Klasse stark vereinfacht zu sehen. Die ID ziehe ich aus einem Listenfeld. Das funktioniert soweit ganz gut. Mein Problem ist nun aber, dass ich das Feld bei dem Wert 0 so belegen möchte, dass mir alle ID's angezeigt werden. 

Also in die Richtung "Select * from x WHERE id = egal". Ist das möglich? Wenn ja wie?

Ich hab beim Datum ein ähnliches Problem gehabt, aber da konnte ich dann eben bei Nichtauswahl default- Werte setzen wie "0000-00-00" bzw. das aktuelle Datum. Ich hoffe, es ist verständlich, wo mein Problem liegt.


```
public Vector getAuswertung2(int id) throws SQLException{
		
		Vector auswertung = new Vector();
		if (stat39 == null) {
			stat39 =
				DBConnection.connection.prepareStatement(
						"SELECT * from x WHERE id = ? ");
		}
		
		stat39.setInt(1, id);
		ResultSet res = stat39.executeQuery();
		
		while(res.next()){
			
			Vector a = new Vector();
			a.add(res.getString("feld1"));
			a.add(res.getString("feld2"));	
			auswertung.add(a);	
			System.out.println(a);
		}
		res.close();
			
		return auswertung;
	}
```

Vielen Dank schonmal für Antworten und Grüße
Stefan


----------



## Roar (12. Apr 2006)

die where klausel einfach weglassen? :autsch:


----------



## Stefan_Wegener (12. Apr 2006)

Dann müsste ich verschiedene PrepareStatements erstellen, oder?

Ich habe hier ein Formular, wo man z.b. ein "ab"- Datum, ein "bis"- Datum, einen Titel, einen Regisseur etc. eingeben kann. Also kurzum eine Suchmaske. Wenn ich nun jeden Fall abdecken würde, was ausgefüllt wurde und was nicht, wären das relativ viele Statements. Oder geht das auch einfacher/ anders?


----------



## Roar (12. Apr 2006)

*kopfkratz* du kannst auch WHERE id = id schrieben wenn dir das angenehmer ist


----------



## Stefan_Wegener (12. Apr 2006)

ich weiss zwar grad nicht genau, wie du das meinst, aber ich probier erstmal wieder etwas und melde mich dann nochmal.


----------



## JavaBeginner2 (12. Apr 2006)

hi   

Ich glaube er meint das hier. 

            DBConnection.connection.prepareStatement(
                  "SELECT * from x ");

Schöne Grüße 

JavaBeginner2


----------



## Caffè Latte (13. Apr 2006)

Hi,

Problem ist jetzt, dass anstelle des "?"  ein Integer-Wert erwartet wird. Da lässt sich meines Wissen nach auch nicht die Zeichenfolge _id_ ohne Hochkommas reinschreiben. Du kommst also um zwei Statements nicht drumherum.


----------



## SlaterB (13. Apr 2006)

SELECT * from x WHERE id >= ? AND id <= ?;


entweder mit genauem Wert (2x) oder mit -MAX und +MAX verwenden? 

-----------

SELECT * from x WHERE id = ? OR 1 = ?;

entweder mit genauem Wert + 17.000 oder mit 2x  1 verwenden?


----------



## Roar (13. Apr 2006)

Caffè Latte hat gesagt.:
			
		

> Da lässt sich meines Wissen nach auch nicht die Zeichenfolge _id_ ohne Hochkommas reinschreiben.



doch lässt sich  :roll:


----------



## Caffè Latte (13. Apr 2006)

Roar hat gesagt.:
			
		

> Caffè Latte hat gesagt.:
> 
> 
> 
> ...




Kannst du mir auch verraten wie?


----------



## Roar (13. Apr 2006)

genauso wie ich und du sagtest?



			
				Roar hat gesagt.:
			
		

> WHERE id = id


----------



## Caffè Latte (13. Apr 2006)

... ich meinte in einem PreparedStatement.


----------



## Roar (13. Apr 2006)

poff, achso

edit: mir is grad eingefallen, man könnte es einfach so machen:

WHERE id = ?

statement.setString(1, "123"); für id 123
oder
statement.setString(1, "%"); für alle


----------



## Caffè Latte (13. Apr 2006)

Hi,

i.d.R. sind aber ID's Integer; das gibt dann einen SQL-Fehler ...


----------



## Roar (13. Apr 2006)

nö das geht auch wenn id nen integer is


----------



## Caffè Latte (13. Apr 2006)

... dann muss er eben doch zwei Statements schreiben. So komplex ist das ja nun auch wieder nicht:



```
Vector auswertung = new Vector();
      String Sql = "SELECT * FROM x";
      if (id != 0) Sql += " WHERE id = ?";
      if (stat39 == null) {
         stat39 =
            DBConnection.connection.prepareStatement(Sql);
      }
      ....
```

Frohe Ostern ...


----------



## Roar (13. Apr 2006)

???:L nein er braucht nur ein statement, siehe meine letzten posts :autsch:


----------

