Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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_Sql_Database_Command_Line - Fatal编程技术网

Java 通过搜索两列从数据库返回数据

Java 通过搜索两列从数据库返回数据,java,sql,database,command,line,Java,Sql,Database,Command,Line,当用户输入同时匹配cUsername和cPassword时,我希望显示所有字段。在测试时,我的SQL语法中出现了一个错误(接近cPassword-like的位置)。有人能提出这个问题吗?请注意,我还没有经历SQL注入 public Car getLogin(String searchUser, String searchPass) { Car foundCar1 = new Car(); try { Class.forName("com.mysql.jdbc.Dr

当用户输入同时匹配cUsername和cPassword时,我希望显示所有字段。在测试时,我的SQL语法中出现了一个错误(接近cPassword-like的位置)。有人能提出这个问题吗?请注意,我还没有经历SQL注入

public Car getLogin(String searchUser, String searchPass) {
    Car foundCar1 = new Car();
    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection(url + dbName, userName, password);
        statement = conn.createStatement();
        resultSet = statement.executeQuery("select * from eflow.registration where cUsername like '" + searchUser
                + "' AND where cPassword like '" + searchPass + "'");

        while (resultSet.next()) {
            foundCar1 = new Car(resultSet.getInt("cID"), resultSet.getString("cLicense"),
                    resultSet.getInt("cJourneys"), resultSet.getString("cUsername"),
                    resultSet.getString("cPassword").toString());
        }
        conn.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return foundCar1;
}

除了你的错误,这里还有一些问题。该错误是由多个where子句引起的。通过更改以下内容来解决此问题:

和其中类似于cPassword的
和类似于cPassword的

我看到的另一件事是like应该与通配符一起使用,因此您可能需要更改:

resultSet = statement.executeQuery("select * from eflow.registration where cUsername like '" + searchUser
            + "' AND where cPassword like '" + searchPass + "'");
致:


除非您正在寻找精确匹配,否则在这种情况下,我会删除like并使用“=”。

这非常有效。谢谢你的帮助不客气,如果答案解决了你的问题,请标出答案,谢谢!你应该改掉这个坏习惯,学会如何使用它。“从eflow.registration中选择*,其中cUsername类似于”“+searchUser+”,而cPassword类似于”“+searchPass+””
resultSet = statement.executeQuery("select * from eflow.registration where cUsername like '%" + searchUser
            + "%' AND cPassword like '%" + searchPass + "%'");