Java MYSQL / JDBC查询从缓存的Connection返回过时数据
我一直在搜索Stackoverflow的答案,但似乎找不到一个不涉及Hibernate或其他数据库包装器. 我通过Tomcat 6 Java EE应用程序中的MYSQL 5.18 JDBC驱动程序直接使用JDBC.我正在缓存Connection对象,但不缓存Statement对象.查询的ResultSet正确地在第一次运行时返回最新数据.当我通过PHPMyAdmin或其他一些外部工具更改几行时,重新运行查询,我得到陈旧的过时数据. 我使用的是普通语句,而不是PreparedStatements.我试过ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE.我也在关闭结果集.这些都没有解决问题.我也尝试过ResultSet.refreshRows(),但是这会导致错误,因为查询有一个JOIN子句. 唯一明确解决问题的方法是关闭Connection并重新连接到数据库,这会导致每次查询尝试的成本都很高. 有没有办法重用Connections而不返回陈旧数据? 编辑:我目前没有使用事务查询. 这是一般代码.
我在这里先向您的帮助表示感谢! 最佳答案 原来这是一个非常见的问题.感谢Brent Worden关于交易的问题让我环顾四周并注意到我已禁用自动提交并且在查询后没有提交. 所以对我有用的解决方案:
要么
这样可以刷新查询并防止过时数据. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 为什么SQLAlchemy create_engine与charset = utf8返回pytho
- MySQL:如何分别从列计数?
- Mysql应用MySQL 删除数据库中重复数据方法小结
- Mysql应用php利用GD库生成缩略图示例
- Mysql入门Windows下MySQL 5.6安装及配置详细图解(大图版)
- Mysql入门解析数据库分页的两种方法对比(row_number()over(
- MYSQL教程win7下完全删除mysql方法示例
- php – 显示数据库表中的动态范围并计算每个范围内的行数
- Mysql命令行还原phpMyAdmin导出的含有中文的SQL文件
- Mysql实例mysql常用命令大全 mysql常用命令总结