Avatar billede mnv_dk Praktikant
11. april 2006 - 13:42 Der er 12 kommentarer og
1 løsning

Prepared statements

Jeg forsøger at køre følgende Prepared statement:

PreparedStatement ps = db.prepareStatement("INSERT INTO outbound_current(field1,field2,field3,field4,field5,field6,field7,field8) VALUES(?,?,?,?,NOW(),'2',?,?)");
      ps.setString(1,value1);
      ps.setString(2,value2);
      ps.setString(3,value3);
      ps.setString(4,value4);
      ps.setInt(5,value7);
      ps.setInt(6,value8);
      ps.execute();

Umiddelbart syntes jeg det ser meget rigtig ud, Men den giver mig: Unhandled exception type SQLException.

Umiddelbart ville jeg jo så bare finde en anden execution type, men det syntes ikke rigtigt at virke
Avatar billede _carsten Nybegynder
11. april 2006 - 13:59 #1
Du mamgler at putte dit statement ind i en try/catch
Avatar billede _carsten Nybegynder
11. april 2006 - 14:01 #2
try{
PreparedStatement ps = db.prepareStatement("INSERT INTO outbound_current(field1,field2,field3,field4,field5,field6,field7,field8) VALUES(?,?,?,?,NOW(),'2',?,?)");
      ps.setString(1,value1);
      ps.setString(2,value2);
      ps.setString(3,value3);
      ps.setString(4,value4);
      ps.setInt(5,value7);
      ps.setInt(6,value8);
      ps.execute();
}
catch(SQLException sql){
  sql.printStackTrace();
}
Avatar billede mnv_dk Praktikant
11. april 2006 - 14:08 #3
Ja det var bare det... Man kan undres over man ikke prøvede det... DOH!

Men smid lige et svar.
Avatar billede _carsten Nybegynder
11. april 2006 - 14:25 #4
Svar :)
Avatar billede nielle Nybegynder
11. april 2006 - 14:36 #5
En try-catch håndtere exception'en på en fornuftig måde.

Den gør imidlertid ikke noget for at fjerne den - og det er vel det egentlige problem? Exceptionen skal vel helt væk?
Avatar billede _carsten Nybegynder
11. april 2006 - 16:41 #6
Du vil aldrig helt kunne fjerne muligheden for at der kastes en exception, og der er mange mulighederne - dårlig skrevet kode, din db går ned, du sparker netstikket ud på din pc, det er før set at et kraftværk falder ud, så det meste af sjælland mangler strøm i op til et døgn (det er vist ikke ret meget mere end et år siden).

Det vigtige er at du tager hånd om en exception når den kastes, så din app. ikke går ned pga. det.
Avatar billede nielle Nybegynder
11. april 2006 - 16:53 #7
Korrekt, men i langt de fleste tilfælde skyldes en exception slet og ret at der er en fejl i koden eller at den ikke stemmer overens med strukturen/indholdet af databasen. I det aktuelle tilfælde optræder fejlen konsekvent, og derfor er det nok også det som er tilfældet i dette tilfælde.

Under alle omstændigheder bør man først kigge efter eventuelle kodefejl, før at man gemmer det af vejen i try-catch blokke.
Avatar billede _carsten Nybegynder
11. april 2006 - 17:48 #8
> nielle

Prøv lige at læse API'et

boolean execute() throws SQLException

D.v.s. den SKAL fanges i en try/catch eller kastes videre og fanges senere.
Avatar billede nielle Nybegynder
11. april 2006 - 18:10 #9
Ja, den smider en exception *hvis* der er en fejl:

"Throws: SQLException - if a database access error occurs or an argument is supplied to this method"

Den smider ikke en exception hvis der ikke er fejl.
Avatar billede _carsten Nybegynder
11. april 2006 - 18:21 #10
Nej - men det ændrer stadig ikke på fakta som er, at et execute statement skal puttes ind i en try/catch eller sendes videre og fanges senere.

Du kan hverken compile eller køre, hvis du ikke gør det - hvor svært kan det være!
Avatar billede nielle Nybegynder
11. april 2006 - 18:31 #11
Se, det er jo rigtigt nok. Men hvordan kan mnv_dk så overhovedet få en "Unhandled exception type SQLException" hvis programmet ikke kan køres?

Under alle omstændigheder, så tyder det at der kastes en SQLException på at der er en fejl. Denne fejl er der stadig ikke fundet en løsning på.
Avatar billede _carsten Nybegynder
11. april 2006 - 18:35 #12
Jeg skal prøve at beherske mig.

Det er en compilefejl han får, IKKE en runtimefejl.

Altså - han får fejlen når han forsøger at compile koden
Avatar billede _carsten Nybegynder
11. april 2006 - 18:36 #13
Læg mærke til hvad der står:  "Unhandled exception"

En exception der ikke er taget hånd om.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester