Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何验证输入的密码是否与输入的电子邮件关联?_Java_Android_Mysql - Fatal编程技术网

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