一、導入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); } } }