public class DBUtilOfDBCP {
private static DBUtilOfDBCP instance = null;
private BasicDataSource dataSource =null;// 数据源
private DBUtilOfDBCP(String filePath) throws IOException{
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 BasicDataSource();
dataSource.setUrl(DBUrl);
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setDriverClassName(driverClassName); // 连接池设置
dataSource.setInitialSize(20);// 初始连接数
dataSource.setMaxActive(100);// 最大获取连接数
dataSource.setMaxIdle(30);// 最大可用空闲连接数
dataSource.setMinIdle(10);// 最小可用空闲连接数
}
public synchronized static DBUtilOfDBCP getInstance(String filePath) throws IOException{
if(instance == null){
instance = new DBUtilOfDBCP(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) throws IOException, SQLException {
// TODO Auto-generated method stub
Long begin = System.currentTimeMillis();
String filePath = "D:/workspace/myreport/WebRoot/WEB-INF/dataSource.ini";
Connection conn = null;
DBUtilOfDBCP dBUtilOfDBCP = DBUtilOfDBCP.getInstance(filePath);
for(int i = 0 ;i<10000;i++){
conn = dBUtilOfDBCP.getConnection();
if(conn != null){
conn.close();
}
}
Long end = System.currentTimeMillis();
System.out.println("连接数据库所需要的时 间:"+(end-begin));
//连接数据库所需要的时 间:750
}
}
private static DBUtilOfDBCP instance = null;
private BasicDataSource dataSource =null;// 数据源
private DBUtilOfDBCP(String filePath) throws IOException{
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 BasicDataSource();
dataSource.setUrl(DBUrl);
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setDriverClassName(driverClassName); // 连接池设置
dataSource.setInitialSize(20);// 初始连接数
dataSource.setMaxActive(100);// 最大获取连接数
dataSource.setMaxIdle(30);// 最大可用空闲连接数
dataSource.setMinIdle(10);// 最小可用空闲连接数
}
public synchronized static DBUtilOfDBCP getInstance(String filePath) throws IOException{
if(instance == null){
instance = new DBUtilOfDBCP(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) throws IOException, SQLException {
// TODO Auto-generated method stub
Long begin = System.currentTimeMillis();
String filePath = "D:/workspace/myreport/WebRoot/WEB-INF/dataSource.ini";
Connection conn = null;
DBUtilOfDBCP dBUtilOfDBCP = DBUtilOfDBCP.getInstance(filePath);
for(int i = 0 ;i<10000;i++){
conn = dBUtilOfDBCP.getConnection();
if(conn != null){
conn.close();
}
}
Long end = System.currentTimeMillis();
System.out.println("连接数据库所需要的时 间:"+(end-begin));
//连接数据库所需要的时 间:750
}
}