Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.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 PreparedStatement获取具有2个字符串的对象_Java_Mysql_Jdbc - Fatal编程技术网

Java PreparedStatement获取具有2个字符串的对象

Java PreparedStatement获取具有2个字符串的对象,java,mysql,jdbc,Java,Mysql,Jdbc,我正在使用MYSQL 5.6 当我尝试上面的代码时,ResultSet返回null public Client viewClient(String clientName, String password) throws Exception { String sql = "SELECT * FROM main.clients where client_name = ? and client_password = ?;"; try (PreparedStatement pstmt =

我正在使用MYSQL 5.6 当我尝试上面的代码时,ResultSet返回null

public Client viewClient(String clientName, String password) throws Exception {
    String sql = "SELECT * FROM main.clients where client_name = ? and client_password = ?;";
    try (PreparedStatement pstmt = connection.prepareStatement(sql)) {
        pstmt.setString(1, clientName);
        pstmt.setString(2, password);// ;(1, clientID);
        ResultSet resultset = pstmt.executeQuery();
        pstmt.closeOnCompletion();
        while (resultset.next()) {
            return new Client(resultset.getLong("client_id"),
                    resultset.getString("client_name"),
                    resultset.getString("client_password"),
                    ClientType.valueOf(resultset.getString("type")),
                    resultset.getString("address"),
                    resultset.getString("email"),
                    resultset.getString("phone"),
                    resultset.getString("comment"));
        }
    } catch (SQLException e) {
        throw new Exception(e.getMessage());
    }
    return null;
}
甚至在下面使用station的代码中,ResultSet也会返回对象

public Client viewClient(String clientName, String password) throws Exception {
    String sql = "SELECT * FROM main.clients where client_name = 'John' and client_password = '1234';";
     try (Statement statement = connection.createStatement()) {
        ResultSet resultset = statement.executeQuery(sql);
        while (resultset.next()) {
            return new Client(resultset.getLong("client_id"),
                    resultset.getString("client_name"),
                    resultset.getString("client_password"),
                    ClientType.valueOf(resultset.getString("type")),
                    resultset.getString("address"),
                    resultset.getString("email"),
                    resultset.getString("phone"),
                    resultset.getString("comment"));
        }
    } catch (SQLException e) {
        throw new Exception(e.getMessage());
    }
    return null;
}
我的语法有问题吗?或者准备状态存在一般性问题?我不知道吗?。
谢谢

您是否检查了sql脚本?我从主要客户那里看到的。您使用的是别名还是仅仅是一个表名?这看起来不错,只是您不需要
在语句的末尾(你在交互客户端中这样做,但不是在代码中),但我看到人们这样做,认为这是无害的。如果不是,我希望您得到一个异常,而不是没有结果。是否需要使用
在sql中?如果返回,为什么还要使用一段时间?您是否检查了变量的值是否与预期一致?旁注2:如果您使用的是try with resources(您正在使用),则没有理由使用
closeOnCompletion
。当执行离开try块时,语句将关闭。