使用druid数据池连接数据库
1.需要导入的包
com.alibaba
druid
1.1.12
2.具体程序实现
package com.zlkj.data.portals.utils;
import java.security.NoSuchAlgorithmException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import org.hibernate.service.spi.ServiceException;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.stat.DruidDataSourceStatManager;
import com.zlkj.data.portals.request.dataSource.TestDataSourceRequest;
import lombok.extern.slf4j.Slf4j;
/**
-
连接池相关系统监测
-
@author admin
*/
@Slf4j
public class DataSourceTools {/**
获取当前连接池信息 - @param dsName
- @return
*/
public static DruidDataSource getDataSource(String dsName) {
DruidDataSource ds = null;
for (DruidDataSource datasource : DruidDataSourceStatManager.getDruidDataSourceInstances()) {
if (dsName.equals(datasource.getName())) {
ds = datasource;
break;
}
}
return ds;
}
/**
- 获取当前连接池信息
- @param dsName
- @return
*/
public static Map<String, Object> getDataSourceStat(String dsName) {
DruidDataSource ds = getDataSource(dsName);
return ds != null ? ds.getStatData() : new HashMap<String, Object>();
}
/**
-
创建数据库连接池
-
@param testDataSourceRequest
-
@return
-
@throws SQLException
-
@throws NoSuchAlgorithmException
*/
public static DruidDataSource createDataSource(TestDataSourceRequest testDataSourceRequest) throws SQLException, NoSuchAlgorithmException {
DruidDataSource druidDataSource = new DruidDataSource();//定义数据池中数据源名称
String dsName = testDataSourceRequest.getDataSourceType() + testDataSourceRequest.getAddress() + testDataSourceRequest.getPort() + testDataSourceRequest.getDataBaseName()
+ testDataSourceRequest.getUserName() + testDataSourceRequest.getUserPassword();
Connection conn = null;
try {
if (testDataSourceRequest.getDataSourceType().equals(“mysql”)) {
druidDataSource.setDriverClassName(“com.mysql.jdbc.Driver”);
}
String url = “jdbc:” + testDataSourceRequest.getDataSourceType() + “😕/” + testDataSourceRequest.getAddress() + “:” + testDataSourceRequest.getPort() + “/” + testDataSourceRequest.getDataBaseName() + “?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&failOverReadOnly=false”;
String username = testDataSourceRequest.getUserName();
String password = testDataSourceRequest.getUserPassword();
druidDataSource.setName(dsName);
druidDataSource.setUrl(url);
druidDataSource.setUsername(username);
druidDataSource.setPassword(password);druidDataSource.setInitialSize(5); druidDataSource.setMinIdle(5); druidDataSource.setMaxActive(5); druidDataSource.setMaxWait(6000); druidDataSource.setMinEvictableIdleTimeMillis(300000); druidDataSource.setRemoveAbandoned(false);//超过时间限制是否回收 druidDataSource.setRemoveAbandonedTimeout(180);//超过时间限制多长 druidDataSource.setTimeBetweenEvictionRunsMillis(60000);//配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 druidDataSource.setTestWhileIdle(true); druidDataSource.setTestOnBorrow(false); druidDataSource.setTestOnReturn(false); druidDataSource.setPoolPreparedStatements(true); druidDataSource.setMaxPoolPreparedStatementPerConnectionSize(20); druidDataSource.setTimeBetweenLogStatsMillis(3600000); druidDataSource.addConnectionProperty("remarksReporting", "true"); conn = druidDataSource.getConnection(username, password);
} catch (SQLException e) {
closeDataSource(dsName);
e.printStackTrace();
throw new ServiceException(“连接数据源失败 : {}” + e.getMessage());
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
closeDataSource(dsName);
e.printStackTrace();
throw new ServiceException(“连接数据源关闭失败 : {}” + e.getMessage());
}
}
return druidDataSource;
}
/**
- 关闭数据库连接池
- @param dsName
*/
public static void closeDataSource(String dsName) {
if (getDataSource(dsName) != null) {
getDataSource(dsName).close();
}
}
}
- 使用druid 数据池对数据库连接密码加密
- druid配置数据库连接使用密文密码
- druid配置数据库连接使用密文密码
- druid配置数据库连接使用密文密码
- druid配置数据库连接使用密文密码
- 在pring-data-jpa中使用druid进行数据库连接的配置
- 用WINXP2+DW+ACCESS使用本地 ASP.NET 和 ASP 服务器时数据库连接失败
- 使用 JDBC 连接不同版本 DB2 数据库的兼容性问题
- 使用VB6编写组件隐藏数据库的连接字符串
- 2006/05/15 ora数据库使用左连接随笔
- 如何通过使用 ADO.NET 2005 和 Visual C# 2005 或使用 ADO.NET 和 Visual C# .NET 连接到数据库并运行命令
- 使用OLE DB连接各种类型的数据库的连接字符串
- 在Pocket PC中使用Web Service连接数据库
- 使用Tomcat 连接池 连接数据库的实例
- 使用DAAB 3.1连接Sybase ASE 11.9.2数据库的两个问题(原创)
- Visual Studio 2005 初体验之三:使用DBFactory class连接数据库
- ASP.NET中使用web.config配置web应用程序中的数据库连接
- 使用JDBC-ODBC方式连接数据库时,如何在代码中指定ODBC数据源信息
- 使用 JDBC 连接不同版本 DB2 数据库的兼容性问题
- 数据中心使用dtu远程连接oracel 9i数据库问题