2013-09-22 77 views
0

試圖設置一個JDBC來檢查數據庫是否有匹配的用戶名和密碼,當按下登錄按鈕(如果匹配用戶被授予訪問權限)時,我會得到我當前的代碼在這裏,但我不確定在啓動程序時缺少什麼,它似乎沒有在數據庫中檢查正確的信息。設置JDBC以檢查用戶名和密碼是否正確

回答

0

您在checkLogin方法中缺少return類型。您可能會返回一個boolean值來驗證用戶。還要添加一些logging/sysout來確定代碼中發生了什麼。

更新你的方法爲:

// launch the application 
    public static boolean checkLogin(String username, String password) 
      throws SQLException { 
     System.out.print("dfdF"); 

     Connection connection = null; // manages connection 
     PreparedStatement pt = null; // manages prepared statement 

     // connect to database usernames and query database 
     try { 

      // establish connection to database 
      Class.forName("com.mysql.jdbc.Driver").newInstance(); 
      Connection con = DriverManager.getConnection(DATABASE_URL, "root", "root"); 

      // query database 
      pt = con.prepareStatement("select userName,password from test.person where userName=?"); 

      // process query results 
      pt.setString(1, username); 
      ResultSet rs = pt.executeQuery(); 
      String orgUname = "", orPass = ""; 
      while (rs.next()) { 
       orgUname = rs.getString("userName"); 
       orPass = rs.getString("password"); 
      } //end while 
      if (orPass.equals(password)) { 
       //do something 
       return true; 
       rs.close(); 
      } else { 
       //do something 
      } 
     }//end try 
     catch (Exception e) { 
     } //end catch 
     return false; 
    } //end main 

,然後更新您的用戶支票

  try { 
       if(usernamecheck.checkLogin(jtfUsername.getText(), jtfPassword.getText())) { 
        System.out.println("User is validated"); 
       } else { 
       return; 
       } 
      } catch (SQLException se) { 
      } 
+0

我會寫在'if(orPass.equals(password)){'語句嗎? – Hayde

+0

@Hayde檢查更新的答案....我還沒有編譯它,所以刪除任何錯誤,如果它來。 –

+0

我修正了錯誤,但它仍然不起作用:/我在我的數據庫中有一個用戶名測試和密碼1234當我把它放入它讓我進入,但即使當我把隨機信息也仍然讓我進來。 post – Hayde

0

讓您checkLogin方法返回布爾類型和內部if (orPass.equals(password)) {塊返回true。如果授予訪問權限,請檢查該方法是否爲true。