2011-11-10 7 views
1

Je souhaite créer un système de connexion avec une base de données MS Access. les données à connecter sont dans la base de données.Système de connexion dans netbeans

Il existe une possibilité de travailler en ligne, vous devez ensuite remplir les informations de connexion. Et appuyez sur OK pour passer à l'écran suivant.

Et une possibilité de travailler hors ligne, puis vous mettez "étudiant" au nom d'utilisateur (laissez le mot de passe vide) et appuyez sur OK pour passer à l'écran suivant.

Il doit y avoir une erreur donnée si les informations d'identification sont fausses, mais il devrait y avoir aucune erreur lorsque seul « étudiant » est rempli

Maintenant, le problème est qu'il donne l'erreur comme un « étudiant » est entré ici, mais il ne devrait pas avoir d'erreur à donner. Seulement lorsque les données de connexion sont erronées. Comment puis-je réparer ça?

code:

/**Local*/ 
    try { 
     String idnr = GebruikersnaamTekst.getText().trim(); 
     if (idnr.matches("Cursist")) { 
     BasisScherm b = new BasisScherm(); 
      b.setVisible(true); 
      setVisible(false); 
     } 
    } catch (Exception e) { 
    } 

/**Internet*/ 
    try 

    { 

    String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; 
    Class.forName(driver); 

    String db = "jdbc:odbc:db1"; 
    con = DriverManager.getConnection(db); 
    st = con.createStatement(); 

    } 
    catch(Exception e) 
    { 

    } 

    try 
     { 

     String idnr = GebruikersnaamTekst.getText().trim(); 
     String pass = Password.getText().trim(); 

     String sql = "select idnr,pass from Table1 where idnr='"+idnr+"'and pass='"+pass+"'"; 
     rs = st.executeQuery(sql); 

      int count = 0; 
     while(rs.next()) 
     { 
      count = count + 1; 
     } 

      if (count == 1) { 
     BasisScherm b = new BasisScherm(); 
      b.setVisible(true); 
      setVisible(false); 
     } 

     else 
     { 
      JOptionPane.showMessageDialog(null, "Gebruiker niet gevonden!"); 
     } 

     } 
     catch(Exception ex) 
     { 
     } 




} 
+1

Nous ne pouvons vous dire sans voir le code ... – Quasdunk

+1

Pourrait-on voir du code que vous travaillez? Cela aidera beaucoup à aider avec une réponse. – kevingreen

+0

Je doute que quelqu'un puisse vous aider sans avoir vu du code en premier! – Andy

Répondre

0

Vous cherchez à réussir si vous correspondez correctement pour « étudiant » droit?

Cela peut être un problème de sensibilité à la casse, essayez ceci.

if (idnr.toLowerCase().matches("cursist")) 

Cela évaluera true et sera insensible à la casse.

Toujours dans la mesure où le flux de programme va, si ceux-ci sont dans la même classe, ou la fonction main(), il exécutera Internet indépendamment du résultat local, ce qui pourrait également introduire des erreurs.

Créer une variable booléenne globale peut-être. Pour confirmer que vous avez fait le chèque étudiant/ code complet:

/**Local*/ 
boolean isStudent = false; 
    try { 
     String idnr = GebruikersnaamTekst.getText().trim(); 
     if (idnr.matches("Cursist")) { 
     BasisScherm b = new BasisScherm(); 
      b.setVisible(true); 
      setVisible(false); 
      isStudent=true; 
     } 
    } catch (Exception e) { 
    } 
if(!isStudent) 
{ 
/**Internet*/ 
    try 

    { 

    String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; 
    Class.forName(driver); 

    String db = "jdbc:odbc:db1"; 
    con = DriverManager.getConnection(db); 
    st = con.createStatement(); 

    } 
    catch(Exception e) 
    { 

    } 

    try 
     { 

     String idnr = GebruikersnaamTekst.getText().trim(); 
     String pass = Password.getText().trim(); 

     String sql = "select idnr,pass from Table1 where idnr='"+idnr+"'and pass='"+pass+"'"; 
     rs = st.executeQuery(sql); 

      int count = 0; 
     while(rs.next()) 
     { 
      count = count + 1; 
     } 

      if (count == 1) { 
     BasisScherm b = new BasisScherm(); 
      b.setVisible(true); 
      setVisible(false); 
     } 

     else 
     { 
      JOptionPane.showMessageDialog(null, "Gebruiker niet gevonden!"); 
     } 

     } 
     catch(Exception ex) 
     { 
     } 

} }//end if 
+0

GebruikersnaamTekst est un JJtekstfield et si cela correspond à "cursist" et que vous appuyez sur le bouton ok, il passera à l'écran suivant. Mais l'autre instruction "Gebruiker niet gevonden" ne doit pas apparaître lorsque les données sont correctes et quand "cursist" est rempli –

+0

Bon, je comprends la logique, je pense. Ce que je vois est, il va ajouter le bouton, puis exécuter l'appel SQL indépendamment, donc aussi la sortie de l'erreur. J'ajouterai plus à la réponse ... – kevingreen

+0

Merci, ça marche pour moi! –