Ik hoop dat ik mijn probleem duidelijk kan uitleggen, here we go...
Ik heb een 'applicatie' waarbij verschillende tekstveldjes moeten (kunnen) ingevuld worden, en er daarna op de 'Zoeken' knop geramd kan worden. Bedoeling is dat die veldjes de ontbrekende delen in een SQL-query gaan invullen, die dan uitgevoerd wordt op een databank, en waarvan de resultaten weergegeven worden.
Het probleem ligt nu bij het feit dat niet alle velden ingevuld moeten worden. Voor 'string' velden is dit geen probleem, dat kan ik detecteren, en gebruik maken van wildcards in de PreparedStatement, waar enkel de ?'s moeten ingevuld worden. Maar hoe moet ik dit doen bij numerieke waarden ? Daar bestaat, voor zover ik weet, geen wildcard voor.
Bvb.
Als het 'string' tekstveld leeg is bij het klikken op de 'zoeken' knop, kan ik gewoon dit doen:
Dit levert geen problemen. Als het numeriek veld echter leeg is, dan kan ik dit niet. Ik ben verplicht van de setInt methode te gebruiken, want de waarde van 'nummer' is gedefinieerd als een numerieke waarde in de DDL code van de databank.
Weet er iemand een oplossing, zodat ik nog steeds van PreparedStatement kan gebruiken ? Ik kan natuurlijk de SQL-query 'opbouwen' mbv een string, die dan al dan niet een 'AND nummer = waarde' bevat, als het tekstveld leeg is of niet, maar dit is (volgens mij) veel minder efficiënt...
Ik heb een 'applicatie' waarbij verschillende tekstveldjes moeten (kunnen) ingevuld worden, en er daarna op de 'Zoeken' knop geramd kan worden. Bedoeling is dat die veldjes de ontbrekende delen in een SQL-query gaan invullen, die dan uitgevoerd wordt op een databank, en waarvan de resultaten weergegeven worden.
Het probleem ligt nu bij het feit dat niet alle velden ingevuld moeten worden. Voor 'string' velden is dit geen probleem, dat kan ik detecteren, en gebruik maken van wildcards in de PreparedStatement, waar enkel de ?'s moeten ingevuld worden. Maar hoe moet ik dit doen bij numerieke waarden ? Daar bestaat, voor zover ik weet, geen wildcard voor.
Bvb.
code:
1
2
| PreparedStatement stat = conn.createStatement("SELECT * FROM Tabel WHERE string = ? AND nummer = ?); |
Als het 'string' tekstveld leeg is bij het klikken op de 'zoeken' knop, kan ik gewoon dit doen:
code:
1
| stat.setString(1,"%"); |
Dit levert geen problemen. Als het numeriek veld echter leeg is, dan kan ik dit niet. Ik ben verplicht van de setInt methode te gebruiken, want de waarde van 'nummer' is gedefinieerd als een numerieke waarde in de DDL code van de databank.
Weet er iemand een oplossing, zodat ik nog steeds van PreparedStatement kan gebruiken ? Ik kan natuurlijk de SQL-query 'opbouwen' mbv een string, die dan al dan niet een 'AND nummer = waarde' bevat, als het tekstveld leeg is of niet, maar dit is (volgens mij) veel minder efficiënt...
[ Voor 5% gewijzigd door Boegel op 26-02-2004 22:51 . Reden: layout effe fixen ]
boegel - er zijn maar 10 soorten mensen in de wereld: diegene die het binaire stelsel kennen en diegene die het niet kennen