25. april 2005 - 18:25
Der er
15 kommentarer og 1 løsning
lidt om sql Plus og JDBC
hej alle.. jeg vil spørge jer onm det er muligt for sql plus at ignorere en attribut, hvis denne er null. et eksempel er f.eks at jeg har denne linie: String query = "SELECT * FROM VARE WHERE vareID = '"+vareId+"' AND navn = ´"+navn+"' AND prodDato = '" +prodDato+ ....... vareId, navn, prodDato, osv er attributter , der kommer fra brugerindtastninger i en GUI. Hvad kan jeg gøre for at sqlPlus accepterer denne linie, selvom en bruger har undladt at skrive et "navn". Hvilket vil sige at alle de attributer, der ikke er givet fra GUI'en skal undlades i denne query. Jeg takker på forhånd og uddyber gerne hvis spørgsmålet er umuligt at forstå...;-)
Annonceindlæg fra Novataris
Vejen til devops med Bavarian Nordic
Bavarian Nordics vækst blev starten på et DevOps-samarbejde med Novataris for hurtigt at kunne tilpasse IT-organisation til forretningen.
7. december 2023
25. april 2005 - 18:31
#1
Hvad med: String query = "SELECT * FROM VARE WHERE " if(vareId != null && !vareId.equals("")) { query = query + "vareID='" + vareId + "' AND "; } if(navn != null && !navn.equals("")) { query = query + "navn='" + navn + "' AND "; } ... query = query.substring(0, query.length() - 5); // skrot sidste AND ?
25. april 2005 - 19:31
#2
hej Arne... Det lyder som en glimrende plan... men er du lige rar og fortælle mig hvad sidste linie gør : query = query.substring(0, query.length() - 5); // skrot sidste AND ...altså udover at fjerne AND fra sidste if sætning...tak
25. april 2005 - 19:42
#3
hej igen... mangler der ikke et semikolon efter første linie?? eksemplet her, er med String attributter...har du en idé hvis det er integers samt Date?? jeg giver gerne flere point, hvis jeg strammer den...;-)
25. april 2005 - 19:46
#4
Den sidste linie gør ikke andet end at djerne de sidste 5 tegn. Man tager fra tegn 0 til tegn længde - 5.
25. april 2005 - 19:47
#5
jo - der mangler et semikolon.
25. april 2005 - 19:47
#6
integers er bare uden '' omkring altså ikke if(vareId != null && !vareId.equals("")) { query = query + "vareID='" + vareId + "' AND "; } men if(vareId != null && !vareId.equals("")) { query = query + "vareID=" + vareId + " AND "; }
25. april 2005 - 19:48
#7
Med Date skal du nok skifte til PreparedStatement.
25. april 2005 - 20:01
#8
men der kommer altså disse fejl Error(121,16): method !=(int, null) not found in class mypackage8.OrdreGateway Error(121,35): object type required, but int found men man kan vel heller ikke sætte en integer forskellig fra null....vel????
25. april 2005 - 20:03
#9
ah - nej - det kan du ikke
25. april 2005 - 20:04
#10
ok...jeg gør vel bare sådan her: if(vareId >0 ) { query = query + "vareID=" + vareId + " AND "; }
25. april 2005 - 20:05
#11
if(vareId != 0) { query = query + "vareID=" + vareId + " AND "; } eller nok snarere: // vareId er en String if(vareId != null && !vareId.equals("")) { int vareId2 = Integer.parseInt(vareId); query = query + "vareID='" + vareId2 + "' AND "; }
25. april 2005 - 20:15
#12
Perfekt!! tak for hjælpen... svarer du lige..??
25. april 2005 - 20:17
#13
ok
25. april 2005 - 20:44
#14
hvorfor sætte du ikke bare property på dine tabeller i oracle? (jeg går ud fra du bruger oracle 9i DB) :) du kan snildt sætte at en tabel godt må være null
25. april 2005 - 22:20
#15
ovenstående er variable i hans Java kode ikke tabel felter
25. april 2005 - 22:25
#16
ah okay. læser ikke halvdelen :P
Computerworld tilbyder specialiserede kurser i database-management