即使行存在,executeQuery Mysql-Java中的ResultSet也为false

即使行存在,executeQuery Mysql-Java中的ResultSet也为false,java,mysql,prepared-statement,resultset,executequery,Java,Mysql,Prepared Statement,Resultset,Executequery,我使用Java中的preparedStatement从MySql中的一个表中获取两列。如果我直接在MySql数据库上执行查询,则该查询有效并返回行。但对于此方法调用,ResultSet在每个ResultSet.next调用上的值都为false。代码如下: private ResultSet fetchFriends(int lActProfId) throws SQLException { // TODO Auto-generated method stub St

我使用Java中的preparedStatement从MySql中的一个表中获取两列。如果我直接在MySql数据库上执行查询,则该查询有效并返回行。但对于此方法调用,ResultSet在每个ResultSet.next调用上的值都为false。代码如下:

private ResultSet fetchFriends(int lActProfId) throws SQLException {
        // TODO Auto-generated method stub
        String selectRelationQry= "SELECT friend_id, type FROM fs_relationship WHERE profile_id =?";
        System.out.println("---- In method FetchAndInsertInWall()->fetchFriends - Qry: "+selectRelationQry);
        pst = lCon.prepareStatement(selectRelationQry);
        pst.setInt(1, lActProfId);
        System.out.println("lActProfId: "+ lActProfId );
        ResultSet res3 = pst.executeQuery();
        System.out.println("---- temp--- In method FetchAndInsertInWall()->fetchFriends query has no Results");
        if(!res3.next()){
            System.out.println("---- In method FetchAndInsertInWall()->fetchFriends query has no Results");
        } else {System.out.println("Elements in res3: "+res3.next() +  res3.next() + res3.next());
        }
        pst = null;
        return res3;
    }
我在控制台上获得以下输出:


请帮助我如何解决此问题,并使用正确的数据获得正确的结果集。

我认为您忘记了在pst变量之前声明PreparedStatement 写: PreparedStatement pst=lCon.PrepareStatementSelectionRelationQRY; 而不是:

pst = lCon.prepareStatement(selectRelationQry);

使用getString而不是next来获取行的值


如果结果少于三行,则将耗尽结果集。我不知道在返回一次false后下一个是否需要工作。

你有一个系统。在你要求之前,我们说没有结果,而且你正在使用。接下来的三次之后,我没有得到你想要的?!如果没有任何值,则无法从数据库中获取任何值,这将通过单击结果中的下一步迭代最终导致错误如果使用相同参数的完全相同的查询在数据库浏览工具中返回行,则表示数据库浏览工具返回已插入但尚未提交的行,或者代码没有使用与数据库浏览工具相同的数据库/模式。res3.next+res3.next+res3.next有什么意义?那个代码毫无意义。它只推进三行的结果集,而不实际获取任何数据:您确定您的结果至少包含4行吗?谢谢您的评论。对不起,如果我的问题不够清楚。我还处于java的学习阶段,所以可能在代码上有一些错误。我想我找到了问题的原因,我在同一个连接中使用了多个结果集。我在同一个连接上尝试了多个preparedStatements,但在获取第二个ResultSet后访问第一个ResultSet时仍然失败。请引导我们完成这项工作。
pst = lCon.prepareStatement(selectRelationQry);