简单JDBC SQL查询返回空ResultSet

时间:2015-09-13 04:14:44

标签: java mysql sql-server jdbc

我一直在尝试获取一个插件,我正在努力与我的SQL数据库交谈,创建表格,添加行似乎工作得很好,但简单的SELECT查询返回一个空的ResultSet。相关代码如下。

        queryL=
                "SELECT RATING"
                        + " FROM USERS"
                        + " WHERE UUID = '"
                        + UUID +"';";
        queryG=
                "SELECT RATING"
                        + " FROM " + Constants.serverName 
                        + "_USERS"
                        + " WHERE UUID = '"
                        + UUID +"';";
        try {
            stmt=con.createStatement();
            rs=stmt.executeQuery(queryL);

            if (rs.next()){
                r.setLocalRating(rs.getInt(1));
            }else{
                r.setLocalRating(0);
                registerPlayer(UUID,false);
                Dungeon.getPlugin(Dungeon.class).log("Player new to server");
            }
            stmt.close();

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        try{
            stmt=con.createStatement();
            rs=stmt.executeQuery(queryG);
            if (rs.next()){
                r.setGlobalRating(rs.getInt(1));
            }else{
                r.setGlobalRating(0);
                registerPlayer(UUID,true);
                Dungeon.getPlugin(Dungeon.class).log("Player new to network");
            }
            stmt.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

正如您可以看到ResultSet是否为空(我的数据库中还没有播放器),我调用registerPlayer。注册播放器然后抛出一个重复的主键错误条目,所以我知道表和我正在寻找的行存在。

以下代码显示了registerPlayer方法中使用的更新查询。

    if (global){
        query=
                "INSERT INTO"
                //+ Constants.dbName + "."
                + " USERS"
                + " VALUES ('"
                + UUID + "', 0)";

    }else{
        query=
                "INSERT INTO "
                //+ Constants.dbName + "."
                + Constants.serverName
                + "_USERS "
                + "VALUES ('"
                + UUID + "', 0)";
    }

最后,为了完整性,用于创建表的查询

    String userLocalTable=
            "CREATE TABLE IF NOT EXISTS " //+ Constants.dbName + "."
                    + Constants.serverName +
                    "_USERS " +
                    "(UUID varchar(36) NOT NULL, " +
                    "RATING int NOT NULL, " +
                    "PRIMARY KEY (UUID))";
    String userGlobalTable=
            "CREATE TABLE IF NOT EXISTS " + //Constants.dbName + "."
                    "USERS " +
                    "(UUID varchar(36) NOT NULL, " +
                    "RATING int NOT NULL, " +
                    "PRIMARY KEY (UUID))";

我非常感谢对我的问题的任何见解,因为我可以告诉SELECT查询不应该返回空的ResultSet。

1 个答案:

答案 0 :(得分:0)

感谢您的输入,事实证明这是一个显而易见的问题,需要交换QueryL和QueryG各自的查询。