Druid数据库连接池基本使⽤
⼀、导⼊Druid的jar包和数据库驱动jar包
⼆、定义配置⽂件
与c3p0不同,Druid的配置⽂件是properties形式的。⽽且Druid不像c3p0那样可以⾃动加载配置⽂件,Druid需要⼿动去指定配置⽂件,所以Druid的配置⽂件可以叫任意名称,并且可以放置在任意⽬录下。
# druid.properties⽂件的配置
sql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3307/test_db
username=root
password=root
# 初始化连接数量
initialSize=5
# 最⼤连接数
maxActive=10
# 最⼤超时时间
maxWait=3000
⽬录结构如下:
三、使⽤Druid连接池
package cn.xj.datasource.druid;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;
public class Druid_demo {
public static void main(String[] args) throws Exception {
//加载配置⽂件
Properties pro = new Properties();
InputStream is = Druid_ClassLoader().getResourceAsStream("druid.properties"); pro.load(is);
//获取连接池对象
DataSource ds = ateDataSource(pro);
//获取连接
Connection conn = ds.getConnection();
System.out.println(conn);
}
}
四、定义⼯具类
步骤:
1.定义⼀个类JDBCUtils
*类⾥边提供静态代码块加载配置⽂件,初始化连接池对象
*类⾥边要提供这些⽅法:
(1)获取连接⽅法:通过数据库连接池获取连接
(2)释放资源
(3)获取连接池的⽅法
package cn.xj.datasource.utils;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JDBCUtils {
//定义成员变量
private static DataSource ds;
static {
try {
//加载配置⽂件
Properties pro = new Properties();
pro.load(ClassLoader().getResourceAsStream("druid.properties"));
//获取连接池对象DataSourcedruid连接池配置详解
ds = ateDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
//获取链接
public static Connection getConnection() throws SQLException {
Connection();
}
//释放资源
public static void close(Statement stmt,Connection conn){
if (stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null){
try {
conn.close(); //归还连接
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(ResultSet rs,Statement stmt, Connection conn){ if (rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null){
try {
conn.close(); //归还连接
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//获取连接池⽅法
public static DataSource getDateSource(){
return ds;
}
}
五、使⽤⼯具类 package cn.xj.datasource.druid;
import cn.xj.datasource.utils.JDBCUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Druid_demo02 {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
try {
//获取连接
conn = Connection();
//定义sql语句
String sql = "insert into account value(null,?,?)";
//获取PreparedStatement对象
pstmt = conn.prepareStatement(sql);
//给占位符(?)赋值
pstmt.setString(1,"王五");
pstmt.setDouble(2,3000);
/
/执⾏sql语句
int count = uteUpdate();
System.out.println(count);
} catch (SQLException e) {
e.printStackTrace();
}finally {
//释放资源
JDBCUtils.close(pstmt,conn);
}
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论