小弟初学JDBC,现在有个问题向各位请教:
大致代码如下;class A{
    public static void main() {
     //调用B.query方法
     ResultSet rs = new B().query(sql);
     rs.close();
}
}class B{
public ResultSet query(String sql) {
    //建立连接conn及stmt
    ResultSet rs = stmt.executeQuery(sql)
}
}按上述情况,调用完类B中query方法后,conn和stmt何时关闭,这样是否会存在数据库连接未关闭的情况,有没有好的解决办法。

解决方案 »

  1.   

    如果在类B中关闭则在类A中诸如rs.next()方法就用不了了
      

  2.   

    调用完之后 
    if(conn == null)
    {conn.close();}
    其他两个一样的.不过这个都是放到finally中的.
      

  3.   

    if(conn != null) {
       conn.close();
       conn = null;
    }
      

  4.   

    你既然把数据库操作放在了一个类里,那么你在这个类里在放个close()方法就可以了。//类B这样改,应该类B还有个数据库连接函数,不帮你改了,默认你会了。
    class B{ 
    private Connection con;
    private Statement stmt;
    private ResultSet rs;public ResultSet query(String sql) { 
        //建立连接conn及stmt 
        rs = stmt.executeQuery(sql); 

    public synchronized void close() {
            try {
                if (rs != null) {
                    rs.close();
                    rs = null;
                }
            } catch (Exception e) {
                System.err.println(e.getMessage());
                e.printStackTrace();
            }
            try {
                if (stmt != null) {
                    stmt.close();
                    stmt = null;
                }
            } catch (Exception e) {
                System.err.println(e.getMessage());
                e.printStackTrace();
            }
            try {
                if (con != null) {
                    con.close();
                    con = null;
                }
            } catch (Exception e) {
                System.err.println(e.getMessage());
                e.printStackTrace();
            }
        }
    //类a中的主方法这样改
    class A{ 
        public static void main() { 
        //……先建立连接
        //调用B.query方法 
        B example=new B();
       //……sql语句的定义
        ResultSet rs = example.query(sql); 
        example.close(); 

      

  5.   

    不过完全可以单独写一个DAO类,可以多次调用
      

  6.   

    http://www.ibm.com/developerworks/cn/java/j-zhanghz2/