gpt4 book ai didi

java - java中如何避免重复的数据库连接?

转载 作者:行者123 更新时间:2023-11-29 07:01:53 25 4
gpt4 key购买 nike

我有两个类。 C_DB 和 C_Test。

在C_DB中,getConnection()方法返回一个连接。如果我多次调用 getConnection(),它将重新连接到数据库并返回多个连接。

有什么办法可以避免这种情况吗?我想检查连接是否存在,然后返回该连接而不是创建新连接。因此只有 1 个到数据库的连接。

C_DB

public class C_DB {
Connection con;

public C_DB() {
String dbLink = "jdbc:mysql://localhost:3306/database";
String dbUser = "root";
String dbPass = "";

try {
con = DriverManager.getConnection(dbLink, dbUser, dbPass);
} catch (SQLException e) {
throw new IllegalStateException("DB Errors: ", e);
}
}

public Connection getConnection() {
return con;
}
}

C_测试

public class C_Test {

public static void main(String[] args) throws Exception {
Connection con1 = new C_DB().getConnection(); // new connection
Connection con2 = new C_DB().getConnection(); // new duplicate connection
Connection con3 = new C_DB().getConnection(); // new duplicate connection
}

}

最佳答案

您可以使用连接池并将其最大池大小设置为 1,如@Elliott 在评论中指出的那样,或者您可以实现类似的操作。

public class C_DB {

private static C_DB instance;

private Connection con;

private C_DB() {
String dbLink = "jdbc:mysql://localhost:3306/database";
String dbUser = "root";
String dbPass = "";
try {
con = DriverManager.getConnection(dbLink, dbUser, dbPass);
} catch (SQLException e) {
throw new IllegalStateException("DB Errors: ", e);
}
}

public static Connection getConnection(){
if(instance == null){
instance = new C_DB();
}
return instance.con;
}

}

关于java - java中如何避免重复的数据库连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43164654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com