Я пытаюсь создать настольное приложение, используя Corba и Java Swing для графического интерфейса. Как вы знаете, в CORBA мы должны сделать основные методы, такие как: подключение к базе данных, ...

0
infomr 4 Мар 2021 в 22:56

1 ответ

Лучший ответ

Согласно вашему comment, я понимаю, что вы успешно подключаетесь к базе данных, но ваш запрос не возвращает ни одной строки.

Если код в вашем вопросе является вашим фактическим кодом, то вы передаете JTextField в свой [SQL]-запрос, а не текст JTextField. Аналогично с паролем. Вы передаете JPasswordField, а не действительный пароль.

Попробуйте приведенный ниже код.

public  void connect_db(){
    JTextField txtUsername = FrameLogin.txtUsername;
    JPasswordField pwd= FrameLogin.pwd;
    JLabel lblLoginMessage= FrameLogin.lblLoginMessage;
    try {
//        Class.forName("com.mysql.cj.jdbc.Driver"); <- not required
        Connection conn =(Connection)DriverManager.getConnection("jdbc:mysql://localhost:3306/utilisateurs","root", "Mrayhana123");
        Statement stm = conn.createStatement();
        String sql="select * from etudiant where username='"+txtUsername.getText()+"' and pwd='"+pwd.getText()+"'";  // Change here.
        ResultSet result = stm.executeQuery(sql);
        if(result.next()){
            lblLoginMessage.setText("you are connected");
            lblLoginMessage.setForeground(Color.GREEN);
        }
        else {
            lblLoginMessage.setText("Incorrect username or password!");
            lblLoginMessage.setForeground(Color.RED);
        }
    } catch(Exception e){
        //System.out.println("not connected to database");
        e.printStackTrace();
}

Поскольку вы используете конкатенацию строк, toString из JTextField вставляется в вашу строку SQL.

Вместо этого рассмотрите возможность использования PreparedStatement.

String sql="select * from etudiant where username=? and pwd=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, txtUsername.getText());
ps.setString(2, pwd.getText());

В этом случае, если вы опустите .getText(), код не компилируется.

0
Abra 5 Мар 2021 в 14:57