Java JDBC Форма входа - PullRequest
       1

Java JDBC Форма входа

2 голосов
/ 08 декабря 2011

Я не могу получить пароль и имя пользователя в моем Java JTextfield и Passwordfield. Я пытался сравнить входные данные пользователя и проверить, хранятся ли имя пользователя и пароль в базе данных, и если да,войти в систему, но проблема в том, что мой getText () в моем поле пароля устарел, как бы я это исправить ??

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import javax.swing.JOptionPane;

public class Login extends JFrame {

private JLabel nameLabel;
private JLabel passwordLabel;
private JTextField nameText;
private JPasswordField passwordField;
private JButton submitButton;
Connection conn = null;

public Login(){

super("Log in!");
setLayout(new FlowLayout());
setVisible(true);
setSize(178,190);
setDefaultCloseOperation(EXIT_ON_CLOSE);

nameLabel = new JLabel("User ID: ");
add(nameLabel);

nameText = new JTextField(10);
add(nameText);

passwordLabel = new JLabel("Password: ");
add(passwordLabel);

passwordField = new JPasswordField(10);
add(passwordField);

submitButton = new JButton("Submit");
add(submitButton);

ButtonHandler handler = new ButtonHandler();
submitButton.addActionListener(handler);
}

private class ButtonHandler implements ActionListener{

public void actionPerformed(ActionEvent e){

String user = nameText.getText();
String pass = passwordField.getText();
try{
Jdbc test = new Jdbc();
conn = test.dbConn();
String query = "SELECT employee_ID,employee_password FROM user where ='"+user+"'";

}catch(Exception eee){
eee.printStackTrace();
}
}
}
}

Ответы [ 3 ]

5 голосов
/ 08 декабря 2011

Используйте getPassword () вместо getText() метода.

  char []passChars=passwordField.getPassword();
   if(passChars!=null) { 
       String pass=new String(passChars);
       String sql="SELECT employee_ID,employee_password FROM user 
                             where user=? and employee_password=?";
       PreparedStatement ps=conn.prepareStatement(sql);
       ps.setString(1,user);
       ps.setString(2,pass);
       ResultSet rs=ps.executeQuery();
       if(rs.next()) {
          //found
       }
       else{
          //not found
       }
       rs.close();
       ps.close();
       conn.close();
   }

Стоит отметить, что не используйте жестко закодированный SQL-оператор.Используйте PreparedStatement для экранирования строки для предотвращения внедрения SQL.

2 голосов
/ 08 декабря 2011
char[] p = passField.getPassword();
String password = new String(p);

Я думаю, вы должны использовать PreparedStatement

PreparedStatement prepstmt = con
        .prepareStatement("SELECT employee_ID,employee_password FROM user where username = ? AND Password = ? ");
    prepstmt.setString(1, user);
    prepstmt.setString(2, password);


    ResultSet rs;
    rs = prepstmt.executeQuery();

    boolean found = rs.next();
    if (found)
      System.out.println(rs.getString(1));
    prepstmt.close();

  }
0 голосов
/ 18 июля 2013

JPasswordField в Swing имеет метод getPassword (), который возвращает массив символов .

String passText = new String(passField.getPassword());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...