Avatar billede 2cool Nybegynder
12. december 2001 - 00:33 Der er 4 kommentarer og
2 løsninger

SQLException i en actionPerformed metode!

Jeg er gået igang med java for ikke så lang tid siden, så måske jeg kommer til at stille et par dumme spørgsmål herinde - sorry, men det vi skal vel alle starte et sted!

Det der er mit problem er at jeg skal kaste en SQLException, men ved ikke hvor jeg skal gøre det, eller hvordan jeg skriver det! Jeg har en container som forbinder til en database gemmen ODBC, og metoden/constructoren i den klasse skaber forbindelsen. Den constructor kaster exception (throws SQLException) og det virker fint - det har jeg testet i en konsolapp! Nu vil jeg så gerne skabe en instans af den klasse i følgende kode:

====================
åbenButton.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
    kc = new KundeContainer();
    kundeItr = kc.getKunder(0);
    k = new Kunde();
      if (kundeItr.hasNext()) {
        k = ((Kunde)kundeItr.next());
        updateFields(k);
      } 
  }
});
====================

KundeContainer er den classe hvori min constructor kaster SQLExceptionen!

Spørgsmålet er så! Hvordan får jeg taget mig af den exception der evt. kan komme?

Der kommer følgende fejl på nuværende tidspunkt:
unreported exception java.sql.SQLException; must be caught or declared to be thrown
      kc = new KundeContainer();
          ^
1 error

Håber en kan hjælpe mig hurtigt!
Avatar billede greybeard Nybegynder
12. december 2001 - 00:41 #1
åbenButton.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
    try{
      kc = new KundeContainer();
      kundeItr = kc.getKunder(0);
      k = new Kunde();
        if (kundeItr.hasNext()) {
          k = ((Kunde)kundeItr.next());
          updateFields(k);
        } 
    }catch (SQLException e){
      e.printStackTrace();
    }
  }
});
Avatar billede greybeard Nybegynder
12. december 2001 - 00:42 #2
e.printStackTrace(); er mest til debugging.
Du kan sætte noget andet relevant kode her, eller helt undvære.
Avatar billede greybeard Nybegynder
12. december 2001 - 00:44 #3
Du kan også skifte SQLException ud med Exception. Så fanger du alle Exceptions og ikke bare SQLExceptions.
Avatar billede jakoba Nybegynder
12. december 2001 - 00:45 #4

try {
    kc = new KundeContainer();
} catch(SQLException e) {
    // din kode der gør noget ved det.
}

måske du skal sige
} catch(java.SQL.SQLException e) {
hvis der ikke importeres java.SQL i den .java fil.

mvh JakobA
Avatar billede 2cool Nybegynder
12. december 2001 - 01:17 #5
Greybeard kom først - I havde begge to ret!

Dog kunne jeg ikke bruge (SQLException e) da mit e allerede eksisterede i (ActionEvent e) - så jeg måtte kalde det noget andet - det var pisse dejligt med noget kvalificeret hjælp på denne tid af døgnet - tak skal I have!!
Avatar billede greybeard Nybegynder
12. december 2001 - 01:19 #6
Selv tak
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