2013-10-20 64 views
-1

請老兄,我一直在這一整天試圖讓我的managerCorner GUI基於這個認證來執行。我使用了正確的值,即數據庫中的值來檢查managerLogin()方法是否授予我對managerCorner GUI界面的訪問權限,但它沒有奏效。有一個LoginInterface類具有處理用戶認證的表單。我試圖用正確的值登錄,但是如果(rset.next())...沒有調用managerCorner GUI類,則沒有異常或錯誤被標記掉!這是爲什麼?這個驗證碼有什麼錯誤?

public void managerLogin(int id, String usn, String pwd) { 
try { 
    try { 
     Class.forName("com.mysql.jdbc.Driver").newInstance(); 
    } 
    catch(Exception e) { 
     JOptionPane.showMessageDialog(null, e.getMessage()); 
    } 
    java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/ phoneShopSystem","aknessy", dbLogin.db()); 
    String query = "SELECT managerID, managerUsername, managerPwd" 
    + "FROM `manager` WHERE managerID = ? AND managerUsername = ? AND managerPwd = ?"; 
    java.sql.PreparedStatement pst= con.prepareStatement(query,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); 
    int i = rset.getInt(1); 
    String u = rset.getString(2); 
    String p = rset.getString(3); 

    rset = pst.executeQuery(); 
    if(rset.next()){ 
     if((i == id) && (u.equals(usn)) && (p.equals(pwd))){ 
      new managerCorner(); 
      managerCorner.setDefaultLookAndFeelDecorated(true); 

      }else{ 
      JOptionPane.showMessageDialog(null, "The User: "+ usn +" With ID "+ id + " \n" 
      + "Does Not Exist!", "\nLogin Failed!", JOptionPane.OK_OPTION); 
     } 
     rset.close(); 
     con.close(); 
     }catch(SQLException sql){ 
     JOptionPane.showMessageDialog(null, sql.getMessage(),"SQL ERROR!!!",JOptionPane.OK_OPTION); 
    } 
}} 
+0

請格式化您的代碼。這段代碼會讓下一位給你一個性能評估的程序員看起來很雜亂。 – tbodt

+1

你在哪裏設置查詢語句參數。 –

回答

0

您的問題是在這兩條線:

new managerCorner(); 
managerCorner.setDefaultLookAndFeelDecorated(true); 

在所有的情形產生,這是不是你想要做什麼。它甚至不會編譯。你的,如果你寫這是正確的一個更好的機會:

corner = new managerCorner(); 
corner.setDefaultLookAndFeelDecorated(true); 

我不能完全肯定,這將工作,但我沒有足夠的信息,以確保它。


由於莫里森昌指出,也沒有代碼來設置參數爲PreparedStatement。也許這也是一個問題?