Журнал ошибок и проверка аутентификации java - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь получить свой код, чтобы проверить, есть ли мое имя пользователя и пароль в базе данных, только у меня везде есть ошибки. У вас есть решение?

вот мой код в моей Login_form:

 PreparedStatement st;
    ResultSet rs;

    // donnez l'username et le password 
    String username = jTextField_Username.getText();
    String password = String.valueOf(jPasswordField.getPassword());

    // requete indiquant si les identifiants existent 
    String query = "SELECT * FROM 'users' WHERE 'username' = ? AND 'password' = ?";

    try {
        st = Connecter.getConnection().prepareStatement(query)

        st.setString(1, username);
        st.setString(2, password);
        rs = st.executeQuery();

        if(rs.next())

        {
            // Show my new form 
        }else{
            // Error message 
        }


    } catch (SQLExeption ex) {
        Logger.getLogger(Login_Form.class.getName()).log(Level.SEVERE, null, ex);
    }

, а это мой код моего коннектора

package javaapplicationhotel2;

import java. sql. *;

publi c class Connecter {

static Object getConnection() {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
Connection con; 



public Connecter() {
  try{
  Class.forName("com.mysql.cj.jdbc.Driver");
  }catch(ClassNotFoundException e){
      System.err.println(e);


}
try{
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/hotel","root","");
}catch(SQLException e){System.err.println(e);}
}
Connection obtenirconnexion(){return con;}

PreparedStatement prepareStatement(String select__from_classe) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.



}

}

1 Ответ

0 голосов
/ 09 мая 2020

Проблема, кажется, находится в вашем классе Connecter. Особенно в методах getConnection() и prepareStatement(), поскольку они всегда возвращают бросок UnsupportedException. Другая проблема заключается в том, что getConnection() имеет возвращаемый тип Object, даже если вы рассматриваете его как коннектор в своем блоке try. Поэтому я предлагаю вам изменить тип возвращаемого значения getConnection на Connection и вернуть new Connection() или использовать new Connection() в первую очередь. Также вы можете захотеть заменить свои вызовы setString(int, String), которые предположительно заменяют '?' с соответствующим именем пользователя и паролем, с String.format(String, Object...). Вы можете использовать этот метод для замены определенных частей строки (например,% s для строк,% d для целых чисел и т. Д. c.) Таким образом, в вашем случае вы должны использовать его следующим образом:

String format = "SELECT * FROM 'users' WHERE 'username' = %s AND 'password' = %s;"
String query = String.format(format, username, password);

В качестве примечания: в современном jdb c вам фактически не требуется загружать класс Driver с помощью Class.forName(String), поэтому вы можете его опустить.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...