我无法让我的插件在我的MySQL数据库中存储值

时间:2019-10-03 17:13:32

标签: java mysql minecraft

我正在编写一个插件,该插件将在MySQL中存储与播放器连接的值,以供另一台服务器使用(蹦极绳),但仍在测试中,因此我试图保存播放器的UUID,名称和显示名称。

我遵循了youtube教程,因为这是我第一次涉足黑暗艺术。我已经看过视频,却没有发现任何东西可以让我离开他的代码。我什至使代码在数据库中创建表,因为我不确定要用于UUID和其他变量的变量

@EventHandler
public void onJoin(PlayerJoinEvent event) {
    Player player = event.getPlayer();
    createPlayer(player.getUniqueId(), player);
}

public boolean playerExists(UUID uuid) {
    try {
        PreparedStatement statement = plugin.getConnection().prepareStatement("SELECT * FROM " + plugin.table + "WHERE UUID=?");
        statement.setString(1, uuid.toString());
        ResultSet results = statement.executeQuery();
        if(results.next()){
            plugin.getServer().broadcastMessage(ChatColor.YELLOW + "Player found");
            return true;
        }
        plugin.getServer().broadcastMessage(ChatColor.RED + "Player NOT found");
    } catch (SQLException e){
        e.printStackTrace();
    }
    return false;
}
public void createPlayer(final UUID uuid, Player player) {
    try {
        Statement tableCreation = plugin.getConnection().createStatement();
        tableCreation.executeUpdate("CREATE TABLE IF NOT EXISTS " + plugin.table + "(UUID varchar(36), PLAYER VARCHAR(16), DISPLAY_NAME VARCHAR(16))");
        PreparedStatement statement = plugin.getConnection()
                .prepareStatement("SELECT * FROM " + plugin.table + "WHERE UUID=?");
        statement.setString(1, uuid.toString());
        ResultSet results = statement.executeQuery(); // error here
        plugin.getLogger().info("Thinking...");
        results.next();
        if(!playerExists(uuid)){
            plugin.getLogger().info("Player dose not exist!");
            PreparedStatement insert = plugin.getConnection()
                    .prepareStatement("INSERT INTO " + plugin.table + "(UUID,NAME,DISPLAY_NAME) VALUE (?,?,?)");
            insert.setString(1, uuid.toString());
            insert.setString(2, player.getName());
            insert.setString(3, player.getDisplayName());
            plugin.getLogger().info("Adding Player...");
            insert.executeUpdate();
            plugin.getLogger().info("Player Added");
            plugin.getServer().broadcastMessage(ChatColor.GREEN + "Player Inserted");
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

我知道大量代码对不起,我标记了代码在此处返回错误的地方// //错误

服务器日志中的错误: https://pastebin.com/3uQHmjqT

我想要的是代码完整无误,并且可以将播放器添加到我的数据库表中

对于那些想要在此处观看视频的人,您可以去

https://www.youtube.com/watch?v=2HQ385ssa3Y-第1部分将其设置为连接

https://www.youtube.com/watch?v=F8hoBWnrqOU-第2部分,保存值(还将连接值放入配置中)

1 个答案:

答案 0 :(得分:0)

解决我的问题的方法是直接从github教程中获取代码。 https://github.com/DGIProject/UUIDSql/blob/master/src/main/java/fr/dgiproject/UUIDSql.java 我肯定在某个地方犯了一个错误,但我找不到它。但这是我的解决方案。

编辑1:我浏览了github和我的github,发现了一个区别,当测试得到MariaDB server version for the right syntax to use near...时,应该在“ plugin.table”和“” WHERE“之间缺少”“(空格)一直是“ plugin.table +“ WHERE”。现在我很确定我已经测试过了,但是我猜没有...