情况是这样的:创建了多个Connection,connectionA对数据库的修改,connectionB无法看到。创建的connection没有开启事务的自动提价。
步骤是:connectionA对数据库进行了修改(可以在数据库中,明确看到,数据确实修改了),然后connectionB执行了一个executeQuery动作,但是得到的结果集居然没有反映刚才connetionA修改的结果。
prePareStatment或者createStatement时都是采用的默认方式。
这个现象的解决可以通过以下两种方式:
(1)connectionB每次查询之前,强制提交一次事务,然后在查询
(2):connectionB创建Statement时,指定ResultSet.Type_Scroll_sensitive;
上面两种方式试过都可以解决。
现在想知道为什么会出现这种原因,connectionB为什么看不到数据库中的更改(此时还没有通过查询产生ResultSet呢)?
这种现象在Mysql和sqlite数据中,都出现了,其他数据库暂时还没试过,我用的jdk是1.8版本,Mysql是5.6版本的。修改