Hallo Community,
ich entwickle zur Zeit im Rahmen eines Forschungsprojektes eine Datenbank-Anwendung, die die Verwaltung von Bild-Dateien ermöglicht.
Wir arbeiten u.A. mit Java, Tomcat, JSPs und einer Postgre Datenbank.
Wenn ein benutzer die "Erweiterte Bildersuche" benutzt, steht ja noch nicht fest, inwieweit er seine Suche eingrenzen möchte:
Z.b.
Alle Bilder =>
Alle Bilder vom Autor xyz =>
Alle Bilder vom Autor xyz und hoher Auflösung =>
Daraus ergibt sich eine hohe Anzahl von Kombinations-Möglichkeiten und dass die Anzahl der WHERE Klauseln erst zur Laufzeit feststeht.
Bisher haben wir dieses Problem mit String-Konkatenation gelöst. Die Where Clauses werden in einer Liste gesammelt und in einem loop konkateniert.
Leider soll diese Form der Query-Generierung sehr inperfomant sein und ist definitv anfällig für SQL-Injections.
Kennt jemand eine elegante Möglichkeit, dieses Problem zu umgehen?
Gruß
Norm
ich entwickle zur Zeit im Rahmen eines Forschungsprojektes eine Datenbank-Anwendung, die die Verwaltung von Bild-Dateien ermöglicht.
Wir arbeiten u.A. mit Java, Tomcat, JSPs und einer Postgre Datenbank.
Wenn ein benutzer die "Erweiterte Bildersuche" benutzt, steht ja noch nicht fest, inwieweit er seine Suche eingrenzen möchte:
Z.b.
Alle Bilder =>
SQL:
Select * from image
SQL:
Select * from image WHERE autor LIKE 'xyz'
SQL:
Select * from image WHERE autor LIKE 'xyz' AND solution LIKE 'high'
Daraus ergibt sich eine hohe Anzahl von Kombinations-Möglichkeiten und dass die Anzahl der WHERE Klauseln erst zur Laufzeit feststeht.
Bisher haben wir dieses Problem mit String-Konkatenation gelöst. Die Where Clauses werden in einer Liste gesammelt und in einem loop konkateniert.
Leider soll diese Form der Query-Generierung sehr inperfomant sein und ist definitv anfällig für SQL-Injections.
Kennt jemand eine elegante Möglichkeit, dieses Problem zu umgehen?
Gruß
Norm