25. september 2008 - 19:37Der er
8 kommentarer og 1 løsning
null i prepared statement
Hej
jeg skal slette noget fra en database via et prepared statement
i en if sætning har jeg disse 2 udfald: 1. stmt.setDate(4, null); 2. stmt.setDate(4, sqlTilDato);
og sql sætningen er
"DELETE FROM Omkostningstrin WHERE (afd = ? AND omkid = ? AND fradato = ? AND tildato = ?)"
problemet er at jeg vil gerne have at hvis der ikke står noget i tildato kolonnen så skal det slette når jeg bruger stmt.setDate(4, null); men det virker ikke. forstår i problemet?
okay tak for inspirationen, jeg kan dog ikke selv løse den helt, jeg kan se at jeg for slette for mange rækker
her er mit forsøg: "DELETE FROM Omkostningstrin WHERE (afd = ? AND omkid = ? AND (fradato = ? OR fradato is null AND tildato = ? OR tildato is null))"
altså hvis brugerne ikke skriver en dage i begge eller bare et af dato felterne skal den kunne håndterer det. og selvfølgelig også hvis der skrives i begge dato felter
Jeg tvivler på du for slettet flere records end der opfyldes af kriterierne.
Generelt - laver du et program som at visse data skal udfyldes førend programmet fungerer, må bruger ikke kunne gemme data førend betingelserne er opfyldt, så du står nok overfor en lille omstrukturering af programmet
Du nødt til tvinge bruger til at sætte en tildato eller også skal du selv sætte tildato == fradato, hvis dit program leverer et fornuftigt resultat ud fra det kriterie
jeg ved godt jeg ikke for slette for mange, men at jeg laver en forkert sql-sætning mener. brugeren indtaster noget i nogle jtextfields og hvor det defineres hvad der skal slette i en ms access database. brugeren skal som minimum skrive en afdeling og omkid og må så selvom fradato og tildato. hvis der ikke står noge i fradato og tildato så skal alt slette hvor afdeling og omkid opfylder kriterierne og hvis der står noget i fradato eller tildato eller begge så skal det tages med.
jeg kan godt løse problemet ved at lave flere sql sætninger og så lave en if else sætning i java koden der tjekker om der står noget i fradato og tildato jtextfieldsne
men jeg vil bare gerne have den bedste løsning måske noget if else i sql koden hvis man kan det?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.