经测试,打开/关闭一条数据库需要4或5秒
整个一条功能流程从开始到结束一共10秒,2次数据库打开占用了9秒~~!数据库连接是这样写的:四个类  0.应用类:调用接口类   1.主类:提供的接口类   2.业务类:执行查询的类   3.连接类:连接数据库
0.应用类
public class OOO()
{
  public void getMyInfo()
  {
    AAA a=new AAA()
    a.Run1();
    a.Run2();
  }
}
1主类public class AAA()
{
  public String Run1()
  {
    BBB b=new BBB();
    String n=b.getName();
    b.closeConn();
    return n;
  }
  public String Run2()
  {
    BBB b=new BBB();
    String a=b.getAge();
    b.closeConn();
    return a;
  }
}3.业务类--写法一
public class BBB()
{
  private Connection conn=CCC.getConn();
  public String getName(){...stmt...rs...}
  public String getAge(){...stmt...rs...}
  public void closeConn(){CCC.dbclose(conn);}
}3.业务类--写法二  //这么写的话,主类AAA多一步b.openConn();
public class BBB()
{
  private Connection conn=null;
  public void openConn()
  {
    conn=CCC.getConn();  
  }
  public String getName(){...stmt...rs...}
  public String getAge(){...stmt...rs...}
  public void closeConn(){CCC.dbclose(conn);}
}4.连接类
public class CCC()
{
  private static Connection conn = null;
  public static Connection getConn(){}
  public static void dbclose(Connection conn){}
}
上面的数据库连接编写的合理么,那里有不对的地方?以上面的写法打开/关闭一条连接要4,5秒,很慢,怎么能改进一下.(目前没有使用连接池,JDBC直接连接),如果用连接池打开一条连接最快能到1,2秒么?

解决方案 »

  1.   

    如果使用连接池,连接数据库的速度可以近似地为“0”。如果不采用连接池的话,要提高性能,那 Connection 就不能关,并采用单例模式获得 Connection 对象。在数据库连接池中,池里的连接也是不关的哦,连接池中 Connection.close() 的方法是经过代理处理过的,并不是真正地关掉,而是将其放回连接池中。
      

  2.   

    连接池http://www.jopener.cn/category/database-connection-pools/
      

  3.   

    方便起见,只能指望连接池了?
    Tomcat的DBCP,这个用MySQL时配置过.
    先试试看
      

  4.   

    可以了  DBCP
    总时间2秒! 牛不过有个很诡异的参数 SelectMethod=cursor 不添加会有问题,不知道什么意思,网上查到的conf\Catalina\localhost里的xml文件
    url="jdbc:microsoft:sqlserver://212.151.244.192:1433;DatabaseName=mydb;SelectMethod=cursor?
      

  5.   

    想问下access是否可以用连接池~