У меня проблемы с тем, что мое программное обеспечение замедляется через несколько минут использования. Я понял, что проблемы могут быть из-за того, что у меня много связей, которые я не закрываю. У меня есть один класс java с моим подключением к базе данных, из которого я вызываю функцию подключения к различным частям программного обеспечения, которые мне нужны для выполнения запросов. Я не знаю, в какой момент мне следует закрыть свои соединения, потому что, если я пытаюсь закрыть после каждого запроса, я не могу повторно выполнить запрос, так как я получаю сообщение об ошибке «Запрос не может быть выполнен после закрытия соединения с базой данных». Когда я помещаю его в свой класс подключения к БД, сразу после входа в систему я не могу выполнить ни один запрос. В какой момент я должен поставить функцию закрытия db? Ниже приведен мой класс подключения.
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;
}
В какой момент мне следует добавить функцию подключения к базе данных.