PatPeterのSQLiteBukkitプラグイン「SQLibrary」を使用するSQLベースのBukkitプラグインでかなり大きなバグに遭遇しています。別のSOスレッドからの最初のソリューションを使用して、プレーヤーがすでにデータベースに入力されているかどうかを判断しようとしています。詳細については、このフォーラムスレッドを参照してください。ただし、ここでも簡単な概要を説明します。
これはスタックトレースです。
そして、これが疑わしいメソッドであり、スタックトレースに示されている行がマークされています。
SQLite sqlite; // Set in plugin.onEnable(), which executes before anything
String QUERY_PLAYEREXISTS = "SELECT playername FROM table WHERE playername = ?";
...
public boolean exists(String name) throws SQLException {
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
boolean exists = false;
try {
connection = sqlite.getConnection();
statement = connection.prepareStatement(QUERY_PLAYEREXISTS); // 109
statement.setString(1, name.toLowerCase());
resultSet = statement.executeQuery();
exists = resultSet.next();
} finally {
connection.close();
statement.close();
resultSet.close();
}
return exists;
}
何が起きてる?