package com.tenwa.reckon;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import com.alibaba.druid.pool.DruidDataSource;
public class DruidERPDataSource {
private static DruidDataSource dataSource;
private Connection connection;
static {
Properties prop = new Properties();
InputStream is = null;
try {
is = new FileInputStream(DruidERPDataSource.class.getClassLoader().getResource("datasource.properties").getFile());
prop.load(is);
dataSource = new DruidDataSource();
dataSource.setUrl(prop.getProperty("druid.url"));
dataSource.setDriverClassName(prop.getProperty("druid.driver"));
dataSource.setUsername(prop.getProperty("druid.user"));
dataSource.setPassword(prop.getProperty("druid.pwd"));
dataSource.setMinIdle(Integer.parseInt((prop.getProperty("druid.minIdle"))));
dataSource.setMaxActive(Integer.parseInt((prop.getProperty("druid.maxActive"))));
dataSource.setInitialSize(Integer.parseInt((prop.getProperty("druid.initialSize"))));
dataSource.setMaxWait((Long.parseLong((prop.getProperty("druid.maxWait")))));
dataSource.setTimeBetweenEvictionRunsMillis((Long.parseLong((prop.getProperty("druid.timeBetweenEvictionRunsMillis")))));
dataSource.setMinEvictableIdleTimeMillis((Long.parseLong((prop.getProperty("druid.minEvictableIdleTimeMillis")))));
dataSource.setTestWhileIdle((Boolean.parseBoolean((prop.getProperty("druid.testWhileIdle")))));
dataSource.setTestOnBorrow((Boolean.parseBoolean((prop.getProperty("druid.testOnBorrow")))));
dataSource.setTestOnReturn((Boolean.parseBoolean((prop.getProperty("druid.testOnReturn")))));
dataSource.setPoolPreparedStatements((Boolean.parseBoolean((prop.getProperty("druid.poolPreparedStatements")))));
dataSource.setMaxPoolPreparedStatementPerConnectionSize(Integer.parseInt((prop.getProperty("druid.maxPoolPreparedStatementPerConnectionSize"))));
dataSource.setDefaultAutoCommit((Boolean.parseBoolean((prop.getProperty("druid.defaultAutoCommit")))));
dataSource.setValidationQuery(prop.getProperty("druid.validationQuery"));
try {
dataSource.setFilters(prop.getProperty("druid.filters"));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dataSource.setRemoveAbandonedTimeout(Integer.parseInt((prop.getProperty("druid.removeAbandonedTimeout"))));
dataSource.setLogAbandoned((Boolean.parseBoolean((prop.getProperty("druid.logAbandoned")))));
} catch(IOException e) {
}
}
public static void main(String[] args) throws Exception {
for(int i =0;i<400;i++){
DruidERPDataSource erp = new DruidERPDataSource();
ResultSet rs = erp.executeQuery("select * from proj_info");
while(rs.next()) {
System.out.println(rs.getString("proj_id"));
}
}
for(int i =0;i<900;i++){
DruidERPDataSource erp = new DruidERPDataSource();
ResultSet rs = erp.executeQuery("select * from proj_info");
while(rs.next()) {
System.out.println(rs.getString("proj_id"));
}
}
//erp.close();
}
public void getConnection() {
try {
connection = dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void close() {
if(null != connection) {
try {
if(!connection.isClosed()) {
connection.close();
this.connection = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public DruidERPDataSource() throws Exception {
getConnection();
if(this.connection == null) {
throw new Exception("未获取到连接");
}
}
public int executeUpdate(String sql) throws SQLException {
Statement stat = null;
int result= 0;
try {
if(connection == null) {
getConnection();
}
stat = this.connection.createStatement();
result = stat.executeUpdate(sql);
} catch(Exception e) {
e.printStackTrace();
}
return result;
}
public ResultSet executeQuery(String sql) throws SQLException {
Statement stat = null;
ResultSet result = null;
try {
if(connection == null) {
getConnection();
}
stat = this.connection.createStatement();
result = stat.executeQuery(sql);
}catch(Exception e) {
e.printStackTrace();
}
return result;
}
}