基本上我只是檢查一個球員是否存在於mySQL數據庫中,但它一直拋出錯誤等。我不知道如何去做。 (這是在bukkit API的所有做,問題是雖然只是SQL)Java mySQL查詢
當它的玩家登錄會調用databaseFindPlayer方法,看看他們是否在數據庫中存在
所有我需要看到是,如果玩家在數據庫中存在或不
@EventHandler
public void onPlayerLogin(PlayerJoinEvent e) throws SQLException {
getLogger().info("Player joining.... + TEST");
if (databaseFindPlayer(e.getPlayer().getName()) == false) {
getLogger().info("Player does not have data file.. Generating one now");
databaseCreatePlayer(e.getPlayer().getName());
databaseFindPlayer(e.getPlayer().getName()); //For debugging
}
}
public boolean databaseFindPlayer(String name) throws SQLException {
getLogger().info("finding players");
PreparedStatement preparedStatement = c.prepareStatement("show columns from players where field = '" + name + "';");
preparedStatement.setString(1, name);
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
System.out.println("Player exists!");
return true;
} else {
System.out.println("Player doesn't exist!");
return false;
}
}
(所有getLogger()調用其中用於調試)
編輯:
Error message
[18:14:17 ERROR]: Could not pass event PlayerJoinEvent to CustomLeaderboard v0.1
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
va:294) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
a:62) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
ava:501) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
ava:486) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at net.minecraft.server.v1_7_R4.PlayerList.c(PlayerList.java:251) [craft
bukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at net.minecraft.server.v1_7_R4.PlayerList.a(PlayerList.java:138) [craft
bukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at net.minecraft.server.v1_7_R4.LoginListener.c(LoginListener.java:76) [
craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at net.minecraft.server.v1_7_R4.LoginListener.a(LoginListener.java:42) [
craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:160
) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at net.minecraft.server.v1_7_R4.ServerConnection.c(SourceFile:134) [craf
tbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:6
67) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:2
58) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:5
58) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java
:469) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:6
28) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
Caused by: java.sql.SQLException: Parameter index out of range (1 > number of pa
rameters, which is 0).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) ~[craf
tbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987) ~[craft
bukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982) ~[craft
bukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927) ~[craft
bukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at com.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3
709) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3
693) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:454
4) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
at com.mcaletheia.customLeaderboard.CustomLeaderboard.databaseFindPlayer
(CustomLeaderboard.java:88) ~[?:?]
at com.mcaletheia.customLeaderboard.CustomLeaderboard.onPlayerLogin(Cust
omLeaderboard.java:69) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0
_25]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0
_25]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1
.8.0_25]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_25]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
va:292) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
... 14 more
所以,只需要清楚,表示SQL中傳遞給名稱的變量? – Achilles
是的,但更像是一個參數,就像一個方法方法一樣,'?'定義了一個使用'set'方法提供的參數的異常,所以需要按照正確的順序來設置它們;) – MadProgrammer
一個新問題,當一個玩家登錄到服務器但已經在數據庫中佔有一席之地時,它仍然返回false並生成另一個。 – Achilles