14. juni 2005 - 18:25Der er
19 kommentarer og 1 løsning
Den returnere false selvom det burde være true.
Jeg skal lave en metode som skal tjekke i en database om et givent id eksistere. Jeg har oprette test data i databasen og har kørt metoden nogle gange for at se om den fra databasen henter de rigtige oplysninger og det gør den. Derfor antager jeg at der ligger en fejl i java'en. metoden ser således ud:
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Uddybelse af simonvalters kommentar: equals tester om inholdet af to strenge er ens (om der står det samme), mens = tester om der er tale om det samme objekt. Du kan sagtens have to stringobjekter med samme inhold, og da der altså er tale om to forskellige stringobjekter returnerer din metode false, selvom equals er true.
String a,b; a = "foo"; b = a; Her vil a == b give true og a.equals(b) vil give true.
String a,b; a = "foo"; b = "foo"; Her vil a == b give false da, der er tale om to forskellige stringobjekter, men a.equals(b) vil give true.
Jeg tager i ovenstående forbehold for evt. optimering fortaget af kompileren (måske kan den finde på at pege a og b på samme objekt for at optimere), men princippet er som beskrevet og det er det du løber ind i med din metode.
Jeg vil da mene, at det er mere sikkert at bruge kolonnenavn, for så kan man være ligeglad med rækkefølgen i select sætningen. Og for mit eget vedkommende, er det også sådanne eksempler jeg har set flest af.
meningen med catch(Exception ex){} er at jeg ville sætte en JOptionPane.showMessageDialog(this,ex); ind i, så den sparker en exception ud på skærmen. Jeg er bare ikke nået så langt endnu, det meste står stadig på papir. :-)
Jeg tror nu mest at Arne_v grynter over at du bruger den helt brede "Exception" og ikke en meget snæver som rammer lige præcis de/n exception du kan få i det konkrete tilfælde.
Det er ikke særligt pænt at catche så bredt at man får RuntimeException's med, men det går nu nok på dette her niveau.
Det var faktisk den tomme {} jeg tænkte på. Vi har set mange mange spørgsmål her på Eksperten hvor man fik nogle mystiske fejl og så viste det sig at de skyldtes tidligere execeptions som bare var blevet slugt uden at efterlade sig spor.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.