Java 如何验证输入的密码是否与输入的电子邮件关联?
嘿,我正在尝试验证密码是否与他们在电子邮件中输入的密码匹配。我在网上搜索了几个小时,但我尝试的所有其他方法都不起作用。到目前为止,我的密码是:Java 如何验证输入的密码是否与输入的电子邮件关联?,java,android,mysql,Java,Android,Mysql,嘿,我正在尝试验证密码是否与他们在电子邮件中输入的密码匹配。我在网上搜索了几个小时,但我尝试的所有其他方法都不起作用。到目前为止,我的密码是: try { Class.forName(driver).newInstance(); Connection conn = (Connection) DriverManager.getConnection (url + dbName, userName, password); Prepar
try {
Class.forName(driver).newInstance();
Connection conn = (Connection) DriverManager.getConnection
(url + dbName, userName, password);
PreparedStatement checkUserInfo = (PreparedStatement) conn.prepareStatement
("SELECT password FROM profiles WHERE email = ?");
checkUserInfo.setString(1, emailT); //emailT is email pulled from an editText
//checkUserInfo.setString(2, pass1);
//Statement state = (Statement) conn.createStatement();
//String querychk = "SELECT * FROM profiles WHERE email = '"+emailT+"'";
//ResultSet rs = state.executeQuery(querychk);
ResultSet rs = checkUserInfo.executeQuery();
while (rs.next()){
String pass = rs.getString(2);
if (pass.equals(pass1)) {
return success;
}
}
conn.close();
}
catch (Exception e) {
e.printStackTrace();
}
只需将SQL查询修改为:
"select * from profiles where email=? and password=?"
并注意验证输入字段,以防止SQL注入
对于获取PreparedStatement对象或Connection对象,您不必对其进行外部类型转换,因为它返回的对象与您分配给它的对象相同。甚至java文档也为PreparedStatement提供了以下语句
PreparedStatement pstmt = con.prepareStatement(Query);
请不要将密码存储为纯文本。你在DB查询后得到了什么值吗?为什么要发布注释代码?阅读此介绍:@tadman感谢您的警告,我知道我也应该使用php,但现在这就像是一个原则证明,不会向公众发布。@LorenzoR yeah'rs'获得一些数据,但在尝试'String pass=rs.getString(2);'我还尝试了“stringpass=rs.getString(“password”);”这很有帮助,但我的问题是,我需要的不是“PreparedStatement checkUserInfo=(PreparedStatement)conn.prep…”而是“java.sql.PreparedStatement checkUserInfo=conn.prep…”带有占位符的准备语句不应该有sql注入问题。此时的验证是第二个问题。@SketchyTurtle您只需导入一次,就可以直接访问它。当存在诸如:java.util中的List和java.awtyeah中的List之类的歧义时,需要手动指定。我不知道它是怎么回事,我原以为我已经导入了它,但我猜不是:p