1

我在使用PatPeterSQLite 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;
}

这里发生了什么?

4

1 回答 1

1

我从未亲自使用过 SQLite,但我会说您可能错误配置了 SQLite 设置onEnable(),因为sqlite.getConnection()必须返回null。尝试在第 109 行之前添加以下代码:

if(connection == null) {
   throw new RuntimeException("SQLite connection is null!");
}

如果您在下次运行时遇到 RuntimeException,您可能应该查看您的 SQLite 设置。

于 2013-01-03T19:07:23.573 回答