错误日志和验证身份验证java



我正在尝试让我的代码检查我的用户名和密码是否在数据库中,只是我到处都有错误。你有解决方案吗?

这是我的登录表单中的代码:

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;

导入java.sql.*;

公共类连接器{

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.

}

}

问题似乎存在于Connecter类中。特别是在getConnection()prepareStatement()方法中,因为它们总是返回抛出UnsupportedException。另一个问题是getConnection()是返回类型Object,即使您在try块中将其视为连接器。因此,我建议您将getConnection的返回类型更改为Connection,并首先返回new Connection()或使用new Connection()。此外,您可能希望替换setString(int, String)调用,该调用可能会替换"?"带有相应的用户名和密码,带有String.format(String, Object...)。您可以使用此方法来替换字符串的某些部分(例如,%s表示字符串,%d表示整数等(,因此在您的情况下,您将使用它如下:

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

附带说明:在现代jdbc中,实际上不需要用Class.forName(String)加载Driver类,因此可以省略它

最后一件事:如果下次可以适当地缩进代码,那就太好了,因为这会让理解它变得容易得多。

最新更新