數據庫連接池負責分配、管理和釋放數據庫連接,允許程序重復使用一個現有的數據庫連接,而不是重復新建立一個。
![Uploading 連接池_413693.png . . .]
建立連接池就是在原來創建jdbc的基礎上,把原先獲得的Connection接口對象保存到一個list數組中。避免重復連接。
自定義連接池:
package com.whd.utils;
import java.util.*;
import java.sql.*;
/**
* @author Administrator
*自定義連接池
*/
public class MyDbPool {
private static String path,url,name,pass;
//存儲當前的連接對象
private static List<Connection> list;
static {
ResourceBundle rs = ResourceBundle.getBundle("dbinfo");
path = rs.getString("driverpath");
url = rs.getString("dburl");
name = rs.getString("username");
pass = rs.getString("pass");
//list = new ArrayList<Connection>();
list = Collections.synchronizedList(new ArrayList<>());
try {
//加載驅動
Class.forName(path);
//創建5個連接對象
for(int i = 0;i < 5;i++){
list.add(DriverManager.getConnection(url,name,pass));
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**獲取連接對象
* @return
*/
public static Connection getConn(){
if(list.size()>0){
return list.remove(0);
}else{
throw new RuntimeException("請先關閉連接對象!");
}
}
//銷毀連接對象,其實就是再次添加進來
public static void destory(Connection conn){
list.add(list.size(), conn);
}
}
自定義jdbc工具類:
package com.whd.utils;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
/**
* @author Administrator
*封裝數據庫工具類
*/
public class MyDbutils {
//連接對象
private static Connection conn;
//獲取操作sql的語句
private static Statement stmt;
static {
conn = MyDbPool.getConn();
try {
stmt = conn.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void execute(String sql){
try {
stmt.execute(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//必須要關閉
public static void close(){
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
MyDbPool.destory(conn);
}
}
}