当前位置: 首页 > 知识库问答 >
问题:

SQL在缓存中选择未提交结果

苗征
2023-03-14

我正在使用Tomcat和JDBC连接池以及mysql数据库。当一个java。sql。创建连接并设置#setAutoCommit(false),在不提交的情况下执行select语句,然后关闭连接,它似乎会将缓存的连接返回到池。随后在执行相同选择的地方创建的后续连接返回数据库中的过时数据。这种行为似乎很奇怪,因为我被迫提交只执行选择的会话,否则我看不到其他节点反映的更改。有没有办法避免这种行为,或者我必须提交每个选择?

共有1个答案

慕容灿
2023-03-14

问题在于如何为连接API定义契约。提交[1]和回滚[2]方法是在数据库上释放锁时使用的。由于我没有在选择之后提交或回滚,所以在连接返回池时会维护这些锁。因此,必须在执行选择后提交或回滚,才能释放连接中维护的锁。

[1] http://docs.oracle.com/javase/7/docs/api/java/sql/Connection.html#commit() [2] http://docs.oracle.com/javase/7/docs/api/java/sql/Connection.html#rollback()

 类似资料:
  • 问题内容: 我在C#项目中将SQLServer用于故障排除程序,并且我有一个包含ID,Question,QuestionId,Solution和Rank的表。我希望有一个问题的多个解决方案,并且程序将选择排名最高的解决方案,该解决方案仅由最高的数字来选择,该数字在每次正确时都会递增。为此,我有以下SQL语句: 当我只有一个可用的解决方案时,它可以很好地工作,但是当我有多个解决方案时,它却不能。 问

  • 问题内容: 因此,我正在编写此存储过程,而且我真的很喜欢SQL。 我对你们的问题是: 我可以选择整行并将其存储在变量中吗? 我知道我可以做类似的事情: 但是我可以从中选择整行并将其存储在变量中吗? 问题答案: 您可以将字段选择为多个变量: 另一种可能更好的方法是使用表变量: 然后,您可以像常规表一样从表变量中进行选择。

  • Presto SQL真的缺少SELECT语句中的TOP X功能吗? 如果有,在此期间是否有变通办法? https://prestodb.io/

  • 问题内容: 我得到了一个带有自动公司常规设置的桌子。ID。一些行已被删除,因此ID列表可能如下所示: (1,2,3,5,8,…) 然后,从另一个来源( 编辑:另一个来源=数据库中不存在 ),我得到了这个数组: (1、3、4、5、7、8) 我正在寻找我可以在数据库上使用的查询,以从我拥有的数组中获取表中未包含的ID:s的列表。可能是: (4、7) 是否存在?我现在的解决方案是创建一个临时表,以便命令

  • 我有一个简单的使用Ajax从json文件动态生成的select选项,但我没有做到的是在提交表单后将以前选择的选项保持为选中状态。用发送到JS的PHP变量尝试了这一点,但我找不到在脚本标记中使用PHP代码的方法,并且用PHP重复所有内容都很难看。有什么想法吗? 我的PHP AJAX代码: 我的JSON文件:

  • 我在过去使用过JSoup并能够将XPath转换为选择器,但是在一个已经改变的站点上,我无法获得这个表的结果。 Firefox为表 两个都不起作用。即使在Try JSoup链接 第一个第n个子表本身返回NULL。 你知道这个页面有什么特别之处吗? 我将用户代理字符串设置为