【发布时间】:2026-01-06 16:20:02
【问题描述】:
我有一个Connection 类型的方法。一旦连接到数据库,它就会返回Connection 值。代码如下:
public Connection establishConnection()
{
Connection conn = null;
try
{
this.readLogin(); // prompts user to input for user, pass and host variables using Scanner class
this.createDatabaseIfNeeded(); // creates chessleaguedb if not found
conn = DriverManager.getConnection
("jdbc:mysql://"+host+":3306/chessleaguedb", user, pass);
System.out.println("Successfully connected to chessleaguedb");
}
catch (SQLException z )
{
// logic
}
return conn;
}
然后我在我的菜单类中创建这个方法类的实例;调用上述方法并将其返回值传递给菜单类中的 Connection 对象(我这样做只是为了保持整洁,并希望遵守良好的 OO 设计原则):
DatabaseConnection startConnection = new DatabaseConnection(); // class the above method is located in
Connection connect = startConnection.establishConnection();
我的问题是:因为在上述方法中打开了一个活动连接,我是否需要在该方法中显式关闭它?还是因为那个方法中的Connection对象是本地的,方法结束后就不存在了,有必要吗?我无法关闭它,因为在return conn; 之后调用相关的关闭方法会在 NetBeans 中给我一个无法访问的语句错误。编辑* 我不能使用 Pooling 而不是 Java EE,也不能使用开源软件来处理它,因为工作必须是我自己的,因为这是大学工作(第二年)。
【问题讨论】: