/**
* 連接超時時間,使用配置,默認30s
*/
private int connectTimeout = 30000;
/**
* socket超時時間,使用配置,默認30s
*/
private int socketTimeout = 30000;
/**
* SQL超時時間,使用配置,默認30s
*/
private int queryTimeout = 30000;
Connection conn = null;
String driver = ""; //jdbc驅動類名
String url = ""; //連接URL
//Oracle超時屬性對象
Properties connProps = new Properties();
//設置driver和url
if(StringUtils.containsIgnoreCase(dbConn.getType(), DatabaseType.MSSQL)) {
driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
url = MessageFormat.format("jdbc:sqlserver://{0}:{1}; DatabaseName={2}",
new Object[]{ dbConn.getServer(), dbConn.getPort(), dbConn.getDatabase() });
//設置超時時間,轉換單位爲s
connectTimeout /= 1000;
socketTimeout /= 1000;
url = url+";loginTimeout="+connectTimeout+";socketTimeout="+socketTimeout;
} else if(StringUtils.containsIgnoreCase(dbConn.getType(), DatabaseType.MYSQL)) {
driver = "com.mysql.jdbc.Driver";
url = MessageFormat.format("jdbc:mysql://{0}:{1}/{2}",
new Object[]{ dbConn.getServer(), dbConn.getPort(), dbConn.getDatabase() });
//url = url + "?autoReconnect=true&failOverReadOnly=false&maxReconnects=10&connectTimeout=120000&socketTimeout=120000"; //防止獲取不到連接
url = url + "?characterEncoding=utf8&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false&maxReconnects=10&connectTimeout="+connectTimeout+"&socketTimeout="+socketTimeout+"&useSSL=false"; //防止獲取不到連接
} else if(StringUtils.containsIgnoreCase(dbConn.getType(), DatabaseType.ORACLE)) {
driver = "oracle.jdbc.driver.OracleDriver";
url = MessageFormat.format("jdbc:oracle:thin:@{0}:{1}:{2}",
new Object[]{ dbConn.getServer(), dbConn.getPort(), dbConn.getDatabase() });
connProps.put("oracle.net.CONNECT_TIMEOUT",""+connectTimeout);
connProps.put("oracle.jdbc.ReadTimeout",""+socketTimeout);
}
connProps.put("user",dbConn.getUsername());
connProps.put("password",dbConn.getPassword());
try {
Class.forName(driver);
conn = DriverManager.getConnection(url,connProps);
} catch (ClassNotFoundException | SQLException e) {
log.error("獲取數據庫連接失敗", e);
throw e;
}
return conn;
Oracle:
url: jdbc:oracle:thin:@192.168.90.99:1521:Orcl
SQLServer: jdbc:sqlserver://192.168.90.99:1433; DatabaseName=test