gpt4 book ai didi

java - 在java中关闭MySQL数据库连接

转载 作者:行者123 更新时间:2023-12-01 16:29:25 36 4
gpt4 key购买 nike

我的软件在使用几分钟后变得缓慢,这是一个问题。我发现问题可能是因为我有很多没有关闭的连接。我有一个带有数据库连接的java类,我从该类中调用连接函数来连接我需要执行查询的软件的各个部分。我不知道在哪一点应该关闭连接,因为如果我尝试在每个查询后关闭,我将无法重做查询,因为我收到错误“数据库连接关闭后无法完成查询”。当我将其放入数据库连接类中时,登录后立即无法执行任何查询。我应该在什么时候放置数据库关闭函数?以下是我的连接类。

public class databaseConnection {
public static Connection connection(){
Connection con = null;
try{
//test server
//con = DriverManager.getConnection("jdbc:mysql://194.5.156.94:3306/u843360242_tukule?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC","user","password");
//real server
con = DriverManager.getConnection("jdbc:mysql://254gamers2.softether.net:3306/tukule_kwanza?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC","user","password");
//localhost server
//con = DriverManager.getConnection("jdbc:mysql://localhost:3306/tukule?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC","root","password");
}catch (SQLException ex) {
try{
//test server
//con = DriverManager.getConnection("jdbc:mysql://194.5.156.94:3306/u843360242_tukule?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC","user","password");
//real server
con = DriverManager.getConnection("jdbc:mysql://kwanzatukule.ddns.net:3306/tukule_kwanza?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC","user","password");
}catch (SQLException x) {
Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
}
}
return con;
}
}

我需要在软件的各个部分进行查询,如下。

public ArrayList categoriesQuery() {
String query2 = "SELECT * FROM category";
ArrayList categories = new ArrayList();
try {
pst = connect.prepareStatement(query2);
rs=pst.executeQuery();
while(rs.next()){
Object o[]={rs.getInt("id"),
rs.getString("Category_Name")
};
categories.add(o);
}
} catch (SQLException ex) {
Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
}
return categories;
}

我应该在什么时候放置我的数据库连接函数。

最佳答案

关闭连接的代码应该写在finally block 中,这样如果在执行数据库操作时出现错误,连接也会被关闭。您可以执行以下操作:

public ArrayList categoriesQuery() {
//your code
Connection connect=null;
try {
connect = databaseConnection.connection();
if(connect!=null){
//your code for database operations
}
} catch (SQLException ex) {
Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
}
finally{
if(connect!=null){
connect.close();
}
}
return categories;
}

关于java - 在java中关闭MySQL数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62079797/

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