gpt4 book ai didi

java - 连接池查询结果在实时数据和旧数据之间跳转?

转载 作者:搜寻专家 更新时间:2023-10-30 19:54:05 26 4
gpt4 key购买 nike

我正在使用 MySQL 数据库开发 Java SE 应用程序。它使用大小为 10 的连接池,因为有很多屏幕。每个屏幕都有一个线程,大约每 10 秒更新一些 JTable。我的连接池代码取自 http://java.sun.com/developer/onlineTraining/Programming/JDCBook/conpool.html为了我自己的方便添加了一些方法。

我的问题是,当我在应用程序中编辑一些数据并将其保存回数据库时,JTables 现在将随机显示新的更新数据或旧的原始数据,每次线程运行到更新屏幕。每次线程循环时,它都会在新旧之间来回闪烁。

我还有一些对象,我通过单击 JTable 中的一行来加载这些对象,并在文本框中显示它们的详细信息。如果我单击包含存在上述问题的数据的行,则加载的对象也会显示相同的“旧”值。 (尽管对象已经从数据库池获得了一个新的、不同的连接来加载它的值)

当 JTable 再次刷新并显示正确的“更新”数据时 - 我加载了该对象,该对象也显示了正确的数据。

这是我正在使用的数据库连接池库的问题吗,是否有更好的选择?我已经尝试使用 SQL_NO_CACHE 运行所有刷新代码,但这没有任何效果。我是新来的,如果我在细节中遗漏了什么,请告诉我,谢谢!

最佳答案

尝试更改连接的隔离级别:

connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);

此外,请确保正确处理您的事务,否则您可能会遇到随机幻读问题!

编辑:为了正确隔离您的连接,您需要在事务中禁用自动提交和环绕写操作。如果您不这样做,则可能会在写入过程中从另一个连接读取数据,并且可能会返回不一致的数据。

关于java - 连接池查询结果在实时数据和旧数据之间跳转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3603669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com