使用数据库连接池
在程序启动时创建出指定数量的连接保存到池里面,之后要使用连接的时候直接从池中取得。把连接交给连接池区管理了,保证了需要使用连接的时候不再去重新去创建,也保证了连接可以重复使用。
需要的包
package com.biubiu.utils;
import java.sql.Connection;
import java.sql.SQLException;
import com.alibaba.druid.pool.DruidDataSource;
public class DruidConnection {
//实例化一个数据源对象
private static DruidDataSource dataSource = new DruidDataSource();
//使用静态代码为数据源对象初始化值
static{
dataSource.setUrl("jdbc:mysql://localhost:3307/scott"+"?useSSL=false&useUnicode=true"+"&characterEncoding=UTF-8&serverTimezone=UTC");
//用户名
dataSource.setUsername("biubiu");
//密码
dataSource.setPassword("123456");
//驱动地址
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
//初始化连接大小
dataSource.setInitialSize(10);
//连接池最大使用连接数量
dataSource.setMaxActive(20);
//连接获取最大等待时间
dataSource.setMaxWait(3000);
}
/**
* 此时的连接是从连接池中获取
* @return
*/
public static Connection getConnection() {
try {
return dataSource.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public static void close(Connection conn){
if (conn!=null) {
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
package com.biubiu.test;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.biubiu.utils.DruidConnection;
public class DruidTest {
public static void main(String[] args) throws SQLException {
Connection conn = DruidConnection.getConnection();
String sql = "SELECT * FROM emp";
PreparedStatement pst = conn.prepareStatement(sql);
ResultSet rst = pst.executeQuery();
while(rst.next()){
System.out.println("雇员编号:"+rst.getObject("empno")+",雇员姓名"+rst.getObject("ename")+",入职日期"+
rst.getObject("hiredate")+",薪资"+rst.getObject("sal"));
}
}
}