0

これらは .entity ディレクトリ内の私のコードです。

    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_securityQuest、users_answer 列があります。

データベースにデータを作成できます。ただし、retrieveUser メソッドを使用してユーザー名が存在するかどうかを確認しようとすると、コンソールに「列が見つかりません」というエラー メッセージが表示されました。では、この問題を解決するにはどうすればよいでしょうか? 私の retrieveUser メソッドに何か問題がありますか?

私は自分の retrieveUser メソッドを次のように編集しました:

    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;
}

そして、nric、セキュリティの質問と回答を入力してパスワードを取得しようとします。ユーザーインターフェイスのコードは次のとおりです。

    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");
        }
    }
}

しかし、私の検索は機能しません。誰かがそれを手伝ってくれますか?

4

1 に答える 1

1

あなたの問題はここにあると思います

pwd = rs.getString("password");

列名は users_password です

に変更します

 pwd = rs.getString("users_password");
于 2012-12-05T06:46:21.123 に答える