2012-12-05 26 views
0

這些是我在.entity目錄中的代碼。在java swing中找不到列錯誤信息

public boolean createUser() { 
    boolean success = false; 
    DBController db = new DBController(); 
    db.setUp("IT Innovation Project"); 
    String sql = "INSERT INTO forumUsers(users_userName,users_password,users_NRIC)"; 
    sql += "VALUES ('" + userName + "','" + pwd + "','" + nric + "')"; 
    System.out.println(sql); 
    if (db.updateRequest(sql) == 1) 
     success = true; 
    db.terminate(); 
    return success; 
} 

    public boolean retrieveUser() { 
    boolean success = false; 
    ResultSet rs = null; 
    DBController db = new DBController(); 
    db.setUp("IT Innovation Project"); 
    String dbQuery = "SELECT * FROM forumUsers WHERE users_userName = '"; 
    dbQuery += userName + "'"; 
    rs = db.readRequest(dbQuery); 
    try { 
     if (rs.next()) { 
      pwd = rs.getString("password"); 
      success = true; 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    db.terminate(); 
    return success; 
} 

這些是我在用戶界面類中的代碼。

if (userName.equals("")||pwd.equals("")||nric.equals("")) 
     JOptionPane.showMessageDialog(null,"Please enter all text field"); 
    else{ 
     eForumUser user = new eForumUser (userName,pwd,nric); 
     if (user.retrieveUser()) 
       JOptionPane.showMessageDialog(null,"User already exists! Cannot create."); 
     else{ 
      if (user.createUser()==true); 
      JOptionPane.showMessageDialog(null,"User record created successfull!"); 
     } 

我的數據庫表有users_userName,users_password,users_NRIC,users_securityQuestion,users_answer列。

我可以在數據庫中創建一個數據。但是,當我嘗試使用retrieveUser方法檢查用戶名是否存在時,控制檯顯示「列未找到」錯誤消息。那麼我該怎麼做才能解決這個問題呢?我的retrieveUser方法有問題嗎?

我editted我retriveUser方法:

public boolean retrieveUser() { 
    boolean success = false; 
    ResultSet rs = null; 
    DBController db = new DBController(); 
    db.setUp("IT Innovation Project"); 
    String dbQuery = "SELECT * FROM forumUsers WHERE users_NRIC AND users_securityQuestion AND users_answer = '"; 
    dbQuery += userName + securityQuestion + answer + "'"; 
    rs = db.readRequest(dbQuery); 
    try { 
     if (rs.next()) { 
      pwd = rs.getString("users_password"); 
      success = true; 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    db.terminate(); 
    return success; 
} 

我嘗試通過輸入身份證號碼,安全問題和答案,以獲取密碼。這是用戶界面的代碼。

public void submitForgotPwd(ActionEvent e){ 
    String nric = jTextField.getText(); 
    Object securityQuestion = jComboBox.getSelectedItem(); 
    String answer = jTextField1.getText(); 
    if (nric.equals("")||securityQuestion.equals("")||answer.equals("")){ 
     JOptionPane.showMessageDialog(null, "Please enter nric,security question and answer."); 
    }else{ 
     eForumUser user = new eForumUser(nric,securityQuestion,answer); 
     if (user.retrieveUser()==true){ 
     jTextField2.setText(user.getPwd()); 
     }else{ 
      JOptionPane.showMessageDialog(null,"Nric do not exist or wrong security question and answer"); 
     } 
    } 
} 

但是,我的檢索不起作用。有人可以幫我嗎?

+0

有人可以幫助我的第二部分?我是指編輯後的retrieveUser。這是行不通的。 – GabrielHeng

回答

1

我覺得你的問題是在這裏

pwd = rs.getString("password"); 

列名是users_password

所以將其更改爲

pwd = rs.getString("users_password"); 
+0

是的,它的工作原理。非常感謝。 – GabrielHeng