15. februar 2002 - 11:19Der er
11 kommentarer og 1 løsning
NullPointerException i PreparedStatement
Jeg har lavet et PreparedStatement der ser ud som følgende: "INSERT INTO kursus (id, navn, beskrivelse) VALUES (?, ?, ?)"
når jeg kalder setInt(1, 15) på mit PreparedStatement objekt får jeg en NullPointerException. Det er ikke fordi objektet ikke er oprettet, men det er internt i PreparedStatement den kalder videre til den interne metode clearParameter() og kaster så en exception.
Jeg har prøvet at sætte setString(2, "Test") men med samme resultat.
Jeg har prøvet at lave et PreparedStatement med en sætning der vil skabe fejl hvis den bliver sendt til databasen. Og den brokkede sig også. Det må betyde at det statement jeg bruger virker med databasen de den ikke brokker sig over det.
Der ser jo ikke ud til at være noget galt. Jeg har ikke selv oplevet den fejl, og jeg kan kun gætte på hvad der kan gå galt.
1) Hvis Id er autonummereret, kan det være du ikke må give det en direkte værdi 2) Er din databaseforbindelse sat korrekt op? 3) Kan du udføre et preparedstatement uden ?-er i ?
Det kan være fordi at du sender 2 parameter med og der skal bruges 3 paramter i din statement: INTO kursus (id, navn, beskrivelse) VALUES ( ?, ?, ?)"); // 3 stk ? insertStatement.setString(2, "Navn"); //kun 2 parameter
Det tror jeg ikke, Rene. Ved du hvordan et preparedstatement virker, eller gætter du bare? Og hvis du gætter, tror du så egentlig at du er til nogen hjælp overhovedet?
Jeg har prøvet at oprette et script mev nogle gyldige værdier i stedet for ? og når jeg udfører scriptet kører det som var det betalr for det. Så tydeligvis er der noget der fungerer.
id er sat til integer og navn & beskrivelse er sat til varchar(25)
Jeg har testet både på Access 2000 og Interbase - jeg får den samme fejl. Løsningen har været at jeg har lavet en klasse der implementere de samme metoder som PreparedStatement - men som ikke har samme kontrol i databasen. Således at jeg kan udskifte klasse til den rigtige klasse hvis jeg en gang får det til at virke.
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.