一、导入Druid的jar包和数据库驱动jar包
二、定义配置文件
与c3p0不同,Druid的配置文件是properties形式的。而且Druid不像c3p0那样可以自动加载配置文件,Druid需要手动去指定配置文件,所以Druid的配置文件可以叫任意名称,并且可以放置在任意目录下。
# druid.properties文件的配置 driverClassName=com.mysql.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_demo.class.getClassLoader().getResourceAsStream("druid.properties"); pro.load(is); //获取连接池对象
DataSource ds = DruidDataSourceFactory.createDataSource(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(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties")); //获取连接池对象DataSource
ds = DruidDataSourceFactory.createDataSource(pro); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } //获取链接
public static Connection getConnection() throws SQLException { return ds.getConnection(); } //释放资源
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 = JDBCUtils.getConnection(); //定义sql语句
String sql = "insert into account value(null,?,?)"; //获取PreparedStatement对象
pstmt = conn.prepareStatement(sql); //给占位符(?)赋值
pstmt.setString(1,"王五"); pstmt.setDouble(2,3000); //执行sql语句
int count = pstmt.executeUpdate(); System.out.println(count); } catch (SQLException e) { e.printStackTrace(); }finally { //释放资源
JDBCUtils.close(pstmt,conn); } } }