finally{ 
close(); 


你每次执行save都会关闭那些东西的。所以你的save应该类似下面这样
  public void save(String TableName, String pFieldList, String pValueList) throws SQLException {
    try {
      getStatement(); // 既然每次都关闭,干次每次都重新获得就行了
      sql = "insert into " + TableName + "(" + pFieldList + ")values(" + pValueList + ")";
      getStatement();
      sta.executeUpdate(sql);
    } catch (RuntimeException re) {
      throw re;
    } finally {
      close();
    }
  }

解决方案 »

  1.   

    getStatement(); // 既然每次都关闭,干次每次都重新获得就行了
    sql = "insert into " + TableName + "(" + pFieldList + ")values(" + pValueList + ")";
    getStatement();回复上面的回复,为什么要取两次,我这个方法本来一次就可以打开的。
    public void getStatement(){
    if(sta==null ¦con==null){
    try {
    con=ds.getConnection();
    sta=con.createStatement();
    } catch (SQLException e) {
    System.out.println("取得连接异常");
    e.printStackTrace();
    } 我发现当我自己关闭连接之后,在取Connection和Statement时都没有取到似的
      

  2.   


    if(con!=null){ 
    con.close(); 
    set=null; 


    这里你出现了一个笔误。} 
    if(con!=null){ 
    con.close(); 
    con=null; 


      

  3.   

    哦,发现了,但是我关闭了之后会不会等于NULL呀
    比如if(con==null)我感觉con.close()不等NULL希望下面能给个答案现在在家,没法做实验。先给加50分,等看看其它回答,回者有份