Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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 如何从查询中获得结果?(MySQL)_Java_Mysql_Resultset_Rank - Fatal编程技术网

Java 如何从查询中获得结果?(MySQL)

Java 如何从查询中获得结果?(MySQL),java,mysql,resultset,rank,Java,Mysql,Resultset,Rank,我正在给玩家排名,我需要将结果输入Java 我的代码是 public static int getRank(UUID uuid) throws SQLException { checkConnection(); PreparedStatement s = con.prepareStatement( "SET @rownum := 0; SELECT rank FROM ( SELECT @rownum := @rownum + 1 AS rank, win

我正在给玩家排名,我需要将结果输入Java

我的代码是

public static int getRank(UUID uuid) throws SQLException {
    checkConnection();
    PreparedStatement s = con.prepareStatement(
            "SET @rownum := 0; SELECT rank FROM ( SELECT @rownum := @rownum + 1 AS rank, wins, uuid FROM `SKYWARS` ORDER BY wins DESC ) as result WHERE uuid=?");
    s.setString(1, uuid.toString());

    ResultSet r = s.executeQuery();
    r.next();
    return r.getInt(1);
}
但是s.execute()返回false,这意味着没有结果集。如何获得结果集?在MySQL workbench中,它返回网格中的值rank和wins

解决方案:
我在连接语句中添加了
?allowmultiquerys=true
。这使我的代码按原样工作。

@barmar提出了一个很好的解决方案:

    public static int getRank(UUID uuid) throws SQLException {
    checkConnection();
    PreparedStatement s1 = con.prepareStatement(
            "SET @rownum := 0;");
    s1.execute();
    PreparedStatement s = con.prepareStatement(
            " SELECT rank FROM ( SELECT @rownum := @rownum + 1 AS rank, wins, uuid FROM `SKYWARS` ORDER BY wins DESC ) as rank WHERE uuid=?");
    s.setString(1, uuid.toString());
    if (!s.execute()) {
        System.out.println(123);
    } else {
        ResultSet r = s.executeQuery();
        r.next();
        return r.getInt(1);
    }
    return 0;
}

SET语句可以拆分。

根据您的描述,这听起来更像是一个Java问题。添加一个标记可能会对您有所帮助。我不使用Java,但许多MySQL API不允许您在一个调用中执行多个查询。将
SET
语句放在单独的调用中。@Barmar我设置了一个属性以允许multiQuery@UncleCarl谢谢,will do Edit:我已经知道了如何打印SQL错误消息。