public class DBUtilOfC3P0 {
private ComboPooledDataSource dataSource;
private static DBUtilOfC3P0 instance = null;
private DBUtilOfC3P0(String filePath) throws IOException,
PropertyVetoException {
String dataType = null; // 数据库类型1 Oracle 2 SqlServer 3 MySql
String dataname = null; // 数据库名
String URL = null; // 数据库URL
String port = null; // 端口号
String username = null;
String password = null;
String DBUrl = null;
String driverClassName = null;
INI.load(filePath);// 读取数据库配置文件(ini文件)
dataType = (String) INI.getValue("dataSource", "DataType");
URL = (String) INI.getValue("dataSource", "URL");
port = (String) INI.getValue("dataSource", "PORT");
username = (String) INI.getValue("dataSource", "UserName");
password = (String) INI.getValue("dataSource", "PassWord");
dataname = (String) INI.getValue("dataSource", "DataName");
if ("1".equalsIgnoreCase(dataType)) {
driverClassName = "oracle.jdbc.driver.OracleDriver";
DBUrl = "jdbc:oracle:thin:@" + URL + ":" + port + ":" + dataname;
} else if ("2".equalsIgnoreCase(dataType)) {
driverClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
DBUrl = "jdbc:sqlserver://" + URL + ":" + "; DatabaseName="
+ dataname;
} else if ("3".equalsIgnoreCase(dataType)) {
driverClassName = "com.mysql.jdbc.Driver";
DBUrl = "jdbc:mysql://" + URL + ":" + port + "/" + dataname;
}
dataSource = new ComboPooledDataSource(); // 设置jdbc连接信息
dataSource.setUser(username);
dataSource.setPassword(password);
dataSource.setJdbcUrl(DBUrl);
dataSource.setDriverClass(driverClassName);
// 设置连接池
dataSource.setInitialPoolSize(30);
dataSource.setMaxPoolSize(100);
dataSource.setMinPoolSize(10);
}
// 为了保证单例性,必须使用同步关键字
public synchronized static DBUtilOfC3P0 getInstance(String filePath)
throws IOException, PropertyVetoException {
if (instance == null) {
instance = new DBUtilOfC3P0(filePath);
}
return instance;
}
public Connection getConnection() throws SQLException {
Connection conn = null;
if (dataSource != null) {
conn = dataSource.getConnection();
}
return conn;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Long begin = System.currentTimeMillis();
Connection conn = null;
String filePath = "D:/workspace/myreport/WebRoot/WEB-INF/dataSource.ini";
try {
DBUtilOfC3P0 dBUtilOfC3P0 = DBUtilOfC3P0.getInstance(filePath);
for (int i = 0; i < 10000; i++) {
conn = dBUtilOfC3P0.getConnection();
if (conn != null) {
conn.close();
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (PropertyVetoException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
Long end = System.currentTimeMillis();
System.out.println("连接数据库所需要的时 间:" + (end - begin));
// 连接数据库所需要的时 间:828
}
}
单例模式实现C3P0数据库连接池
最新推荐文章于 2023-08-12 22:07:02 发布