Java中关于事务的提交问题
通过JDBC连接Oracle数据库。
现在我想实现的功能是:
有两个类:A和B。在B中调用A的方法
1:在A中建立连接,从表A1中查出一条数据,关闭连接;
2:对A1中查出的这条数据处理后,建立连接,插入数据库,但不提交,然后关闭连接。(建立连接的时候con.setAutoCommit(false);)
3: 在A中建立连接,从表A1中查出第二条数据,关闭连接;
4:对A1中查出的这条数据处理后,建立连接,插入数据库,但不提交,然后关闭连接。(建立连接的时候con.setAutoCommit(false);)
5:回到B中,在B中创建连接,插入一条数据到B1表,如果成功,则A和B中的数据同时提交给数据库。
现在我遇到的问题是:
我在B中插入数据后用con.commit();的时候,只提交了我在B中插的数据,而在A中插入的数据并没有提交。(通过看数据库锁表的sid可以看出来)
如果是因为在B中提交的时候A中的连接已被关闭导致无法提交的话,我试过在第三步,查询出第二条数据后,手动commit,依然能把在第二步中提交的,虽然这个时候第二步中建立的连接已经关闭了。所以我感觉说连接被关闭导致无法提交也不大说得通。