我使用 java swing 创建了一个数据库应用程序。每当我调用 find 类时,我的程序都会从数据库中检索数据。 find 类只是创建一条语句,获取当前数据库连接,然后执行该语句。从数据库返回的值将放置在 ResultSet 中,然后显示在 jTable 上。问题是这样的:
我打开find类,结果显示了。然后我转到 SQLyog 或 HeidiSQL(操作数据库的应用程序),编辑程序上显示的值,然后保存。我回到我的程序,关闭查找类然后重新打开它,我仍然得到以前的数据,而不是编辑后的数据。请帮忙。一旦查找类打开,就必须显示更新。我获取更新数据的唯一方法是关闭整个程序然后重新打开它,但我不想这样做。
编辑: 这就是我尝试过的。基本上,一旦我的程序第一次创建到数据库的连接,我就把它保存到另一个类,这使得连接始终打开(我假设)。因此,每当我想创建查询时,我只需调用该类即可获取连接。我现在所做的是,在从 find 类执行查询后,我使用 .close() 函数关闭连接。它有效,但我真的需要每次都关闭连接吗?同样,这只是一个桌面应用程序,而不是一个网络程序。
最佳答案
我认为您遇到了事务隔离问题。某些驱动程序在获取连接时会启动隐式事务,因此您当时会看到数据库的快照。您可能需要 READ COMMITTED 级别,该级别应显示应用了所有已提交事务的数据库。
关于java - 在 JDBC 上缓存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13260810/