用Java读取MySQL数据库的问题

时间:2014-11-24 14:06:08

标签: java mysql jdbc

我正在开发一个使用PHP + MySQL和Java的在线游戏来制作服务器。

目前工作得很好,但我有一个恼人的问题。我有一个简单的函数,可以从数据库中读取一些数据

public static String loadWeapon(int playerID) {
    query = "SELECT * FROM players WHERE playerID=" + playerID;
    try {
        ResultSet result = query(query);
        while(result.next()) {
            return result.getString("weapon");
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return null;
}

public static synchronized ResultSet query(String query) throws SQLException {
    //create a new statment to execute the query
    Statement statment = connection.createStatement();
    //Execute the query
    ResultSet result = statment.executeQuery(query);
    //Wait a bit (If the query is too long...
    statment.setQueryTimeout(300);
    //And return the result
    return result;
}

该功能完美运行,现在想象我们打开服务器,我们读取数据库,玩家有一把“剑”作为武器,但他在商店买了一个新的,数据库正确更新并在服务器中。我再次运行该函数,但始终返回第一个值,除非我重新启动服务器。我对其他函数做了同样的事情,但从来没有遇到过这个问题,Java有没有像缓存一样引发这个问题?

1 个答案:

答案 0 :(得分:0)

确保未使用MySQL内部缓存。您可以通过添加SQL_NO_CACHE

来完成此操作
SELECT SQL_NO_CACHE * FROM players WHERE playerID= ...