1
PatPeter의 SQLite Bukkit plugin "SQLibrary"를 사용하는 SQL 기반 Bukkit 플러그인에 꽤 큰 버그가 있습니다. 플레이어가 이미 the first solution from another SO thread을 사용하여 데이터베이스에 입력되었는지 확인하려고합니다. 더 많은 정보는 this forum thread에서 찾을 수 있습니다. 그러나 여기서도 간단한 개요를 제공 할 것입니다.SQLite - Bukkit 플러그인의 이상한 NPE
이 스택 추적입니다 :
그리고 여기에 표시된 용의자 방법은 스택 추적에 표시된 라인이다 :
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;
}
여기 무슨 일이야?
사실 실제로, 나는 결국 그것을 알아 냈어. 그리고 그 문제가 정확히 무엇인지 기억할 수는 없지만 본질적으로 테이블 생성이나 데이터 입력과 같은 다른 동작을 위해 예약 된 개폐 형식을 사용하려고 시도했다. 반드시 테이블에서 검색하는 것은 아닙니다. 기본적으로 나는 처음부터 열어 보지 않은 물체를 닫으려고 했었습니다. 처음이자 유일한 대답이기 때문에 받아 들여졌습니다. :) 또한 onEnable()은 JavaPlugin 클래스에 속하는 메소드로 Bukkit에만 해당됩니다. 그러나 나는 당신이 의미하는 것을 볼 수 있습니다! :) – ChaoticWeg
당신이 그것을 알아 낸 것을 기쁘게 생각합니다 :-) 그리고 나는 onEnable이 무엇인지 알기 때문에 Bukkit 플러그인도 만듭니다 : 3 – Xyene
Ahh, my bad. :) – ChaoticWeg