工程目录
一、准备工作
1、导入jar包 :
druid依赖包:druid-1.0.9.jar
mysql驱动包:mysql-connector-java-5.1.37-bin.jar
2、配置文件:
druid.properties
二、代码编写
1、导jar包
2、druid.properties配置文件
# 驱动
driverClassName=com.mysql.jdbc.Driver
# 数据库地址
url=jdbc:mysql://127.0.0.1:3306/my_db
# 用户名
username=root
# 密码
password=root
# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大等待时间
maxWait=3000
3、JDBCUtils工具类
package com.mollen.demo03;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
/**
* @ClassNmme: JDBCUtils
* @Author: Mollen
* @CreateDate: 2018-09-07 16:44:42
* @Description:
* Druid连接池工具类
*/
public class JDBCUtils {
/**
* 1.定义成员变量datasource
*/
private static DataSource ds;
/**
* 2.获取数据源
*/
static{
try {
//1.创建集合对象
Properties pro = new Properties();
//2.加载配置文件
pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
//3.获取连接池对象
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 3.获取数据库连接
*/
public static Connection getConn() throws SQLException {
return ds.getConnection();
}
/**
* 4.释放资源
*/
public static void close(PreparedStatement st, Connection conn){
close(null,st,conn);
}
public static void close(ResultSet rs,PreparedStatement st ,Connection conn){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(st!=null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
4、测试类
package com.mollen.demo03;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/**
* @ClassNmme: DruidTest
* @Author: Mollen
* @CreateDate: 2018-09-07 18:44:42
* @Description:
* durid连接池应用测试
*/
public class DruidTest {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
try{
//1.连接数据库
conn=JDBCUtils.getConn();
//2.定义sql语句
String sql = "INSERT INTO student VALUES(?,?)";
//3.执行sql
pstmt = conn.prepareCall(sql);
//4.解释参数
pstmt.setString(1,"张飞");
pstmt.setInt(2,28);
//5.执行结果(影响行数)
int count = pstmt.executeUpdate();
//打印受影响行数
System.out.println(count+"行受影响...");
} catch (SQLException e) {
e.printStackTrace();
}finally {
//释放资源
JDBCUtils.close(pstmt,conn);
}
}
}
三、注意事项
1、参数解释,注意
参数类型
;
2、执行语句选择
增,删,改(DML)操作建议使用executeUpdate()
;
查询(DQL)操作建议使用executeQuery()
;
需要对执行语句类型做出判断用execute()
3、数据库连接使用完毕必须释放资源