我无法让我的插件在我的 MySQL 数据库中存储值
I can not get my plugin to store values in my MySQL database
我正在编写一个插件,它将在 MySQL 中存储连接到播放器的值以供另一台服务器(弹力绳)使用,但仍在测试中,因此我正在尝试保存播放器的 UUID、名称和显示名称。
我学习了 youtube 教程,因为这是我第一次涉足黑暗艺术。我浏览了视频,没有发现我的代码与他的代码有什么不同。我什至让代码在数据库中创建了 table,因为我不确定要为 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();
}
}
我知道大量代码抱歉,我在代码 returns 处标记了一个错误,这里有 // 错误
服务器日志错误:
https://pastebin.com/3uQHmjqT
我想要的是代码在没有错误的情况下完成,并将播放器添加到我的数据库中 table
想看视频的朋友:
https://www.youtube.com/watch?v=2HQ385ssa3Y - 第 1 部分设置连接
https://www.youtube.com/watch?v=F8hoBWnrqOU - 第 2 部分保存值(还将连接值放入配置中)
我的问题的解决方案是直接从教程 github 中获取代码。
https://github.com/DGIProject/UUIDSql/blob/master/src/main/java/fr/dgiproject/UUIDSql.java
我一定是在某个地方犯了错误,但我找不到它。但那是我的解决方案。
编辑 1:我查看了 github 和我的,发现了差异,测试时给出了 MariaDB server version for the right syntax to use near...
,[=] 之间缺少“”(space) 16=] 和“"WHERE" 它应该是 "plugin.table + " WHERE”。现在我很确定我测试了,但我想没有...
我正在编写一个插件,它将在 MySQL 中存储连接到播放器的值以供另一台服务器(弹力绳)使用,但仍在测试中,因此我正在尝试保存播放器的 UUID、名称和显示名称。
我学习了 youtube 教程,因为这是我第一次涉足黑暗艺术。我浏览了视频,没有发现我的代码与他的代码有什么不同。我什至让代码在数据库中创建了 table,因为我不确定要为 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();
}
}
我知道大量代码抱歉,我在代码 returns 处标记了一个错误,这里有 // 错误
服务器日志错误: https://pastebin.com/3uQHmjqT
我想要的是代码在没有错误的情况下完成,并将播放器添加到我的数据库中 table
想看视频的朋友:
https://www.youtube.com/watch?v=2HQ385ssa3Y - 第 1 部分设置连接
https://www.youtube.com/watch?v=F8hoBWnrqOU - 第 2 部分保存值(还将连接值放入配置中)
我的问题的解决方案是直接从教程 github 中获取代码。 https://github.com/DGIProject/UUIDSql/blob/master/src/main/java/fr/dgiproject/UUIDSql.java 我一定是在某个地方犯了错误,但我找不到它。但那是我的解决方案。
编辑 1:我查看了 github 和我的,发现了差异,测试时给出了 MariaDB server version for the right syntax to use near...
,[=] 之间缺少“”(space) 16=] 和“"WHERE" 它应该是 "plugin.table + " WHERE”。现在我很确定我测试了,但我想没有...