2017-10-06 18 views
0

jButtonのアクション実行メソッド内にコード化されたelse if部分があり、与えられたE_IDのU_LEVELが "Admin"か "User"かをチェックします.Belowはコードです。java NetBeansのif条件の値をtrueにするにはどうすればいいですか?

if (E_ID.getText().trim().length() == 0 | PWD.getPassword() == null) { 
     JOptionPane.showMessageDialog(null, "Username or Password cannot be blank", "Error", 0); 
    } else { 
      try { 
      ResultSet rs = new DBG1().getData("select * from USER where E_ID = '" +E_ID.getText() + "'"); 
      Vector v = new Vector(); 

      if (rs.next()) { 
       v.add(rs.getString(1)); 
      } 
      if (v.isEmpty()) { 

       JOptionPane.showMessageDialog(null, "Invalid Username or Password", "Error", 0); 
       E_ID.setText(""); 
       PWD.setText(""); 
       E_ID.grabFocus(); 

      } else { 
       ResultSet rs1 = new DBG1().getData("select * from USER where E_ID ='" + E_ID.getText() + "'"); 
       while (rs1.next()) { 
        String type = (rs1.getString(2));       

        if (E_ID.getText().trim().equalsIgnoreCase(rs1.getString("E_ID")) && PWD.getText().equals(rs1.getString("PWD"))&& type.equals("Admin")) {// 
         // this.dispose(); 
         new Home_Page(E_ID.getText()).setVisible(true); 

        } else if (E_ID.getText().trim().equalsIgnoreCase(rs1.getString("E_ID")) && PWD.getText().equals(rs1.getString("PWD")) && type.equals("User")) { 
         this.dispose(); 
         new Home_Page(E_ID.getText()).setVisible(true); 

        } 
        else { 

         JOptionPane.showMessageDialog(null, "Invalid Username or Password", "Error", 0); 
         E_ID.setText(""); 
         PWD.setText(""); 
         E_ID.grabFocus(); 
        } 
       } 
       this.dispose(); 
       } 
     } catch (Exception e) { 
      System.out.println(e); 
     } 
    } 

上記のコードでは、else-ifがあります。それに参加すれば、

E_ID.getText().trim().equalsIgnoreCase(rs1.getString("E_ID")) 

一部と

PWD.getText().equals(rs1.getString("PWD")) 

部分が真の値を取得しますが

type.equals("Admin") 

部分はMYSQLデータベース「final_post」は、テーブルが含まれているにもかかわらず、偽の値を取得します私は値 "管理者"と "ユーザー"を保存したU_LEVELという列があります。

mysql> select * from USER; 
+-------+-------+-----+------+ 
| E_ID | type | PWD | CPWD | 
+-------+-------+-----+------+ 
| E/14 | Admin | qwe | qwe | 
| SEC/1 | User | qw | qw | 
+-------+-------+-----+------+ 
2 rows in set (0.04 sec) 

私はtrue.Whereに

type.equals("Admin") 

の値を有効にする必要があり、私は変更を行う必要がありますか?事前に感謝します。

+0

タイプの値は何ですか? – XtremeBaumer

+0

タイプはString String type =(rs1.getString(3));です。 –

+0

私はそれほど確かではありませんが、括弧内の値は2であるべきだと思います。 –

答えて

0

私はどこで修正すべきかを知りました。 ここで、変数タイプは、テーブルUSERの列PWDを参照します。 しかし、これを文字列 "Admin"と比較しました。 それは、それが偽の値を取得した理由です。 正しく動作した場合は、列インデックスを修正してからもう一度実行してください。 :) 文字列タイプ=(rs1.getString(3));これにはString型=(rs1.getString(2));が必要です。 それだけです。 :)

関連する問題