ava写一个数据库连接池并加上注释
时间: 2024-04-30 15:22:45 浏览: 14
以下是一个基本的Java数据库连接池的实现,附有注释以便理解:
```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 static List<Connection> pool = new ArrayList<>();
// 数据库驱动名称
private static final String DRIVER = "com.mysql.jdbc.Driver";
// 数据库连接信息
private static final String URL = "jdbc:mysql://localhost/test";
private static final String USERNAME = "root";
private static final String PASSWORD = "";
// 连接池中允许的最大连接数
private static final int MAX_CONNECTIONS = 10;
// 初始化连接池
static {
try {
Class.forName(DRIVER);
for (int i = 0; i < MAX_CONNECTIONS; i++) {
Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
pool.add(connection);
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
// 获取数据库连接
public static synchronized Connection getConnection() {
if (pool.size() > 0) {
Connection connection = pool.remove(0);
try {
if (connection.isClosed()) {
return getConnection();
}
} catch (SQLException e) {
e.printStackTrace();
return getConnection();
}
return connection;
}
return null;
}
// 释放数据库连接
public static synchronized void releaseConnection(Connection connection) {
try {
if (!connection.isClosed()) {
pool.add(connection);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
使用时,可以先调用 `ConnectionPool.getConnection()` 方法获取一个数据库连接,然后使用完毕后再调用 `ConnectionPool.releaseConnection()` 方法释放连接,如下所示:
```java
public static void main(String[] args) {
Connection connection = ConnectionPool.getConnection();
// 使用连接执行数据库操作
ConnectionPool.releaseConnection(connection);
}
```