Avatar billede jime_boy Nybegynder
16. juni 2005 - 21:59 Der er 20 kommentarer og
1 løsning

CATCH Exception

Jeg har lavet en gui del hvor man skal taste login og password ind til en postgres database. Hvordan griber jeg en exception ved fejl indtastning, således at den vender tilbage til den del hvor brugeren skal indtaste login og pass igen?
Avatar billede kalp Novice
16. juni 2005 - 22:01 #1
hvis en bruger ikke findes i din db bliver der vel ikke kasted en exception..

men før jeg kan svare har jeg brug for flere oplysninger om arkitekturen i dit program
Avatar billede jime_boy Nybegynder
16. juni 2005 - 22:04 #2
Jo der kommer en exception fra databasen
Avatar billede mikkelbm Nybegynder
16. juni 2005 - 22:09 #3
Lidt pseudokode:


boolean loggedIn = false;

while (!loggedIn)
{
  // Spørg efter password
  try
  {
      // Lav dine kald til databasen.
      loggedIn = true;
  }
  catch (Exception e)
  {
     
  }
}

// Fortsæt dit program...


- Det var én mulighed.
Avatar billede mikkelbm Nybegynder
16. juni 2005 - 22:10 #4
Du kan jo også prøve at poste den kode hvor du laver forespørgslen.
Avatar billede arne_v Ekspert
16. juni 2005 - 22:11 #5
noget a la:

boolean ok;
do {
    // indlæs brugernavn og password
    try {
        // connect til database
        ok = true;
    } catch(SQLException ex) {
        ok = false;
    }
} while(!ok);
Avatar billede jime_boy Nybegynder
16. juni 2005 - 22:12 #6
public void opret_forbindelse()
    {
        if((loginnavn.equals(logg))||(koden.equals(passW)))
        {
            frame_login_boks();
            objekter();
            frame_login.setVisible(true);           
        }
        else{forbindelse(loginnavn,koden);}
    }


public void forbindelse(String login,String kode)
    {
        try
        {
        Class.forName("org.postgresql.Driver");
        Connection con= DriverManager.getConnection("jdbc:postgresql://localhost/datEksamen",login,kode);
       
        connection(con);
        loginnavn=login;
        koden=kode;
        }
            catch(Exception ex){JOptionPane.showMessageDialog(this,ex);}
   
    }
Avatar billede jime_boy Nybegynder
16. juni 2005 - 22:13 #7
Det skal lige siges at jeg er ret meget nybegynder inden for faget
Avatar billede mikkelbm Nybegynder
16. juni 2005 - 22:17 #8
public void opret_forbindelse()
{
        boolean loggedIn = false;
        while (!loggedIn)
        {
            // Din kode her som spørger efter bruger og kode
            loggedIn = forbindelse (login, kode);
        }
}

public boolean forbindelse(String login,String kode)
    {
        try
        {
        Class.forName("org.postgresql.Driver");
        Connection con= DriverManager.getConnection("jdbc:postgresql://localhost/datEksamen",login,kode);
       
        connection(con);
        loginnavn=login;
        koden=kode;
        return true;
        }
            catch(Exception ex)
            {
              JOptionPane.showMessageDialog(this,ex);
              return false;
            }
   
    }
Avatar billede arne_v Ekspert
16. juni 2005 - 22:18 #9
prøv og ret

public void forbindelse(String login,String kode)
    {
        try
        {
        Class.forName("org.postgresql.Driver");
        Connection con= DriverManager.getConnection("jdbc:postgresql://localhost/datEksamen",login,kode);
     
        connection(con);
        loginnavn=login;
        koden=kode;
        }
            catch(Exception ex){JOptionPane.showMessageDialog(this,ex);}
 
    }

til

public void forbindelse(String login,String kode) throws ClassNotFoundException,SQLException
    {
        Class.forName("org.postgresql.Driver");
        Connection con= DriverManager.getConnection("jdbc:postgresql://localhost/datEksamen",login,kode);
     
        connection(con);
        loginnavn=login;
        koden=kode;
    }

og så ret opret_forbindelse til som mikkel og mig har outlinet
Avatar billede jime_boy Nybegynder
16. juni 2005 - 22:22 #10
jeg prøver
Avatar billede jime_boy Nybegynder
16. juni 2005 - 22:27 #11
Den kan ikke finde ud af den her:  ClassNotFoundException,SQLException
Avatar billede mikkelbm Nybegynder
16. juni 2005 - 22:28 #12
Hvor skriver du det henne?
Avatar billede mikkelbm Nybegynder
16. juni 2005 - 22:29 #13
Ahh... Så ikke lige Arnes eksempel...
Avatar billede jime_boy Nybegynder
16. juni 2005 - 22:29 #14
på arnes eksempel
Avatar billede mikkelbm Nybegynder
16. juni 2005 - 22:30 #15
Hvilken compilerfejl får du?
Avatar billede mikkelbm Nybegynder
16. juni 2005 - 22:33 #16
Hvis du bruger Arnes eksempel, skal du huske at have try/catch der hvor du kalder metoden.

try
{
  forbindelse (login, kode);
}
catch (ClassNotFoundException e)
{
  e.printStackTrace ();
}
catch (SQLException e)
{
  e.printStackTrace ();
}
Avatar billede jime_boy Nybegynder
16. juni 2005 - 22:33 #17
Det kommer når jeg compiler den, den kan ikke finde ud af hvad det her betyder ClassNotFoundException,SQLException
Avatar billede arne_v Ekspert
16. juni 2005 - 23:01 #18
jeg ville bare flytte catch op i den anden metode

(og bruge de specifikke exceptions fremfor bare Exception)
Avatar billede mikkelbm Nybegynder
17. juni 2005 - 17:18 #19
Har du fået det til at virke?
Avatar billede mikkelbm Nybegynder
24. juli 2005 - 01:37 #20
Lukketid?
Avatar billede jime_boy Nybegynder
19. marts 2007 - 06:30 #21
undskyld jeg ikke lige har fået afsluttet dette spg. men her kommer det...Jeg er lidt i tvivl om hvem der skal have point'ene.
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