java手写动态数据库连接池
时间: 2023-05-29 19:04:49 浏览: 71
以下是Java手写动态数据库连接池的示例代码:
```
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class ConnectionPool {
private String url;
private String username;
private String password;
private List<Connection> connections = new ArrayList<>();
private int maxConnections;
public ConnectionPool(String url, String username, String password, int maxConnections) {
this.url = url;
this.username = username;
this.password = password;
this.maxConnections = maxConnections;
}
public synchronized Connection getConnection() throws SQLException {
if (connections.isEmpty()) {
if (maxConnections == 0 || connections.size() < maxConnections) {
Connection conn = DriverManager.getConnection(url, username, password);
connections.add(conn);
return conn;
} else {
throw new SQLException("Connection pool is full");
}
} else {
Connection conn = connections.remove(0);
if (conn.isClosed()) {
return getConnection();
} else {
return conn;
}
}
}
public synchronized void releaseConnection(Connection conn) {
connections.add(conn);
}
public synchronized void closeAllConnections() throws SQLException {
for (Connection conn : connections) {
conn.close();
}
connections.clear();
}
}
```
使用方法:
```
ConnectionPool connectionPool = new ConnectionPool("jdbc:mysql://localhost:3306/mydb", "user", "password", 10);
Connection conn = connectionPool.getConnection();
// Use the connection for database operations
connectionPool.releaseConnection(conn);
connectionPool.closeAllConnections();
```