我一个class里面有两个方法,都需要进行数据库操作,
class xx{
Connection cnn=null;
public void getConn(){
this.cnn=getconn();//这个方法是别的地方的,不写了,能得到连接的
}
public void c1()
{
...
}
public void c2()
{
....
}
}
然后我执行了c1,而且里面在finally里也执行cnn.close()
然后再进入c2,我在c2里先判断了一下cnn==null,没有的话先getConn(),得到cnn,
但是后面执行到statement的时候就说什么Connection is closed,我不是已经有获得了cnn了,怎么说关了
指教啊,可能我数据库连接池没搞懂,解释一下

解决方案 »

  1.   

    因为conn是个全局的变量,你在C1中conn.close(),但并没有置为null,所以在C2中
    conn不为null,但是连接已接被关闭,所以使用时会报这个错。解决方法:C1中conn.close();后面加一句conn = null;如果对你有帮助,记得给分!
      

  2.   

    同一个实例中的成员变量,用到了关闭的conn不是空的conn 需要关闭后赋值为空
    一楼的正解