java - Java读取MySQL数据库的问题

标签 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 是否有类似缓存的东西会引发这个问题?

最佳答案

确保MySQL的内部缓存未被使用。您可以通过添加SQL_NO_CACHE来做到这一点:

SELECT SQL_NO_CACHE * FROM players WHERE playerID= ...

关于java - Java读取MySQL数据库的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27106711/

相关文章:

java - 数组列表,Java。这两个构造函数有什么区别

java - 如何避免/抑制 JSF <h :selectOneMenu/> null (no selection option) tab?

mysql - 在插入时插入当前日期

java - 使用 TLS 证书的 JDBC 连接到 Oracle 数据库

hadoop - 使用 Teradata Hadoop 连接器时出现连接拒绝异常

java - 如何减小 Android 中使用 MediaRecorder 创建的 mp3 文件的大小

java - 如何知道连接到系统的输入设备有哪些

javascript - 将文本区域数据发送到数据库时出现问题

php - 如何通过一个查询从一张表中选择多个键值?

java - 跨类访问H2连接