com.mousewheel.dbcon;importjava.io.InputStream;importjava.sql.Connection;importjava.sql.SQLException;importjava.util.Properties;importcom.mchange.v2.c3p0.ComboPooledDataSource;public classDBPool {private staticDBPool instance;privateComboPooledDataSource dataSource;static{
instance= newDBPool();
}privateDBPool() {try{
dataSource= newComboPooledDataSource();
Properties prop= newProperties();
InputStream in= DBPool.class.getClassLoader().getResourceAsStream("db.properties");
prop.load(in);
dataSource.setDriverClass(prop.getProperty("jdbcdriver"));
dataSource.setJdbcUrl(prop.getProperty("url"));
dataSource.setUser(prop.getProperty("username"));
dataSource.setPassword(prop.getProperty("password"));
}catch(Exception e) {
e.printStackTrace();
}
}public staticDBPool getInstance(){returninstance;
}public Connection getConnection() throwsSQLException {returndataSource.getConnection();
}
}
DBUtil类,包装DBPool,简化使用
packagecom.mousewheel.dbcon;importjava.sql.Connection;importjava.sql.SQLException;public classDbUtil {public static Connection getConnection() throwsSQLException {
DBPool pool=DBPool.getInstance();returnpool.getConnection();
}
}
测试代码,和不使用连接池的情况做对比
packagecom.mousewheel.dbcon;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.util.Properties;importjava.io.InputStream;importcom.mousewheel.dbcon.DbUtil;classApp {public static voidmain(String[] args) {//use c3p0 connection pool
try{for (int i = 0; i < 100; i++) {long beginTime =System.currentTimeMillis();
Connection con=DbUtil.getConnection();//执行查询语句
String sql = "select * from student";
PreparedStatement ps=con.prepareStatement(sql);
ResultSet rs=ps.executeQuery();while(rs.next()) {//System.out.println(rs.getString(1));
}
con.close();long endTime =System.currentTimeMillis();
System.out.println(String.format("第%s次,%s", i, (endTime -beginTime)));
}
}catch(Exception e) {
e.printStackTrace();
}//jdbc without using conection pool
try{for (int i = 0; i < 100; i++) {long beginTime =System.currentTimeMillis();
Properties prop= newProperties();
InputStream in= App.class.getClassLoader().getResourceAsStream("db.properties");
prop.load(in);
Class.forName(prop.getProperty("jdbcdriver"));
Connection con= DriverManager.getConnection(prop.getProperty("url"), prop.getProperty("username"),
prop.getProperty("password"));
String sql= "select * from student";
PreparedStatement ps=con.prepareStatement(sql);
ResultSet rs=ps.executeQuery();while(rs.next()) {//System.out.println(rs.getString(1));
}
con.close();long endTime =System.currentTimeMillis();
System.out.println(String.format("第%s次,%s", i, (endTime -beginTime)));
}
}catch(Exception e) {
e.printStackTrace();
}
}
}
java 利用c3p0管理数据库连接池
标签:执行 throws exce public etc form exception for prepare
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉
本文系统来源:http://www.cnblogs.com/mousewheel/p/6660238.html