[英]Problems reading MySQL database in Java
我正在使用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是否有类似高速缓存的东西会引发此问题?
确保不使用MySQLs内部缓存。 您可以通过添加SQL_NO_CACHE
:
SELECT SQL_NO_CACHE * FROM players WHERE playerID= ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.