2011-11-10 8 views
1

私はMS Accessデータベースを使ってログインシステムを作りたいと思っています。ログインするデータはデータベースに格納されます。netbeansのログインシステム

オンラインで作業する可能性があります。ログインの詳細を入力します。 OKを押すと次の画面に移ります。

オフラインで作業する能力がある場合は、「student」をユーザー名(パスワードを空のままにしておく)に置き、OKを押して次の画面に移動します。

そこ資格情報は、間違っているだけで、「学生が」ここに入力され

今の問題は、それが「学生」としてエラーを与えるで満たされているエラーがあってはならない場合は、エラーが与えられなければならないが、彼は与えるべき誤りをしてはならない。ログインデータが間違っている場合のみ。これをどうやって解決するのですか?

コード:

/**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

我々は – Quasdunk

+1

は、我々はあなたが取り組んでいるコードの一部を参照してくださいでした...コードを見ることなくあなたを伝えることはできませんか?それは答えを助けるのにかなり役立ちます。 – kevingreen

+0

誰かが最初にいくつかのコードを見ることなくあなたを助けるのではないかと疑います! – Andy

答えて

0

あなたは「学生」のために正しく右一致した場合、それが成功するために探していますか?

大文字と小文字の区別の問題である可能性があります。真の評価、および大文字と小文字を区別されます

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

また、プログラムの流れが同じであれば、それらが同じクラスまたはmain()関数内にある場合、ローカル結果にかかわらずインターネットを実行し、エラーも発生する可能性があります。

おそらく、グローバルブール変数を作成します。あなたが学生のチェック/ 完全なコードをやったことを確認するには、次の

/**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はJJtekstfieldです。これが "cursist"と一致し、okボタンを押すと、次の画面に移動します。しかし、 "cursist"が記入されているときにデータが正しく記入されていると、else文 "Gebruiker niet gevonden"は表示されません –

+0

右、私は論理を理解していると思います。私が見ているのは、ボタンを追加してから、SQLコールを無関係に実行し、エラーを出力することです。私は答えにもっと追加します... – kevingreen

+0

ありがとう、それは私のために働く! –