我在使用PatPeter的SQLite Bukkit 插件“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;
}
这里发生了什么?