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

问题描述 投票:0回答:1

我是排名球员,我需要将结果导入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工作台中,它返回网格中的值rank和wins。

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

java mysql resultset rank
1个回答
0
投票

@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语句可以拆分。

© www.soinside.com 2019 - 2024. All rights reserved.