class  test
{
private Connection cnt;
public void A()
{
try
{
cnt.setAutonCommit(false);
数据库操作
...
this.B();
}
catch
{}
关闭释放资源
}
public void B()//方法b中不要关闭释放资源
{
try
{
...
数据库操作
}
catch
{}
}
}

解决方案 »

  1.   

    class  test
    {
    private Connection cnt;
    public void A()
    {
    try
    {
    cnt.setAutonCommit(false);
    A.数据库操作
    ...
    this.B();
    a.数据库回滚//这里回滚也不能对(A.数据库操作)也不能撤消
    }
    catch
    {}
    关闭释放资源
    }
    public void B()//方法b中不要关闭释放资源
    {
    try
    {
    cnt.setAutonCommit(false);
    ...
    b.数据库操作
    cnt.Commit();///执行到这里的时候,a.数据库操作也一同提交到数据库了,
    }
    catch
    {}
    }
    }============================
    a.数据库回滚//这里回滚也不能对(A.数据库操作)也不能撤消
      

  2.   

    建立两个连接:class  test
    {
    private Connection cnt1;
    public void A()
    {
    try
    {
                               建立连接
    cnt1.setAutonCommit(false);
    A.数据库操作
    ...
    this.B();
    cnt1.rollback();  //a.数据库回滚
    }
    catch
    {}
    关闭释放资源
    }
    public void B()//方法b中不要关闭释放资源
    {
                   private Connection cnt2;
    try
    {
                               建立连接
    cnt2.setAutonCommit(false);
    ...
    b.数据库操作
    cnt2.Commit();
    }
    catch
    {}
                     关闭释放资源cnt2
    }
    }
      

  3.   

    JTA
    UserTransaction或者容器管理