rs st con ctx 分开捕捉异常
推荐2个文章吧
http://www.jspcn.net/htmlnews/11049341177961832.html
http://www.jaron.cn/chs_db/16/2003-09/20030916110224-101181.HTML另外好的连接池 加入单例模式

解决方案 »

  1.   

    连接数据库的方法做好是返回connection
    public Connection conn() throws Exception 
      { 
        try{     //容错         ctx = new InitialContext(); 
            ds = (DataSource) ctx.lookup("java:comp/env/jdbc/test"); 
            con = ds.getConnection(); 
           
            return con;
            }catch(NamingException e){ 
                               
                                      throw e; 
                               
                                     }catch(Exception ex){ 
                                                          throw ex;      
                                                         } 
      } 
      

  2.   

    1 我没看到池,最多算一个连接辅助类
    2 close方法有bug,rs/stat的异常会导致con没有关闭
      

  3.   


    总体思路是不错的,但是我看到close()里面怎么没有finally{}
    这样对总体异常进行处理的,比方说rs关闭异常啦,那statement,con,rtx不久关闭不了了吗?
    建议加一个finally{
    }不管前面关闭怎么样,如果异常了啊,就统一在finally{}里面关掉它。
      

  4.   

    加入finally 后报错:代码片段:public void close(){
     
     try{
        if(rs != null)
        {
         rs.close();
         }
      
        }catch(SQLException ex){
          
          throw ex;
          
         }finally{
                   rs.close();
                 }
      
     try{
         if(st != null)
         {
           st.close();
         }
      
         }catch(SQLException ex){
          
          throw ex;
                  }finally{
                   st.close();
                 } try{
          if(con != null)
          {
            con.close();
          }
      
         }catch(SQLException ex){
          
             throw ex;
          
               }finally{
                        con.close();
                   }
            
      }==============================
    错误信息:
    conn.java:138: 未报告的异常 java.sql.SQLException;必须对其进行捕捉或声明以便抛

                                rs.close();
                                        ^
    conn.java:135: 未报告的异常 java.sql.SQLException;必须对其进行捕捉或声明以便抛

                       throw ex;
                       ^
    conn.java:152: 未报告的异常 java.sql.SQLException;必须对其进行捕捉或声明以便抛

                                st.close();
                                        ^
    conn.java:149: 未报告的异常 java.sql.SQLException;必须对其进行捕捉或声明以便抛

                       throw ex;
                       ^
    conn.java:166: 未报告的异常 java.sql.SQLException;必须对其进行捕捉或声明以便抛

                                con.close();
                                         ^
    conn.java:163: 未报告的异常 java.sql.SQLException;必须对其进行捕捉或声明以便抛

                       throw ex;
                       ^
    6 错误
      

  5.   

    tomiehu 什么意思? 
      

  6.   

    可以打印异常出来
    看看是什么问题.
    .
    .
    catch(SQLException ex){ 
           
             ex.printStackTrace();
           
               }
    .
    .
    .