我的方法返回Connection
对象的值。
Public class DatabaseConnection
{
public Connection establishConnection(C)
{
try
{
this.readLogin(); // prompt user to enter String values for user, pass, host
this.createDatabaseIfNeeded(); // make chessleaguedb if not found
conn = DriverManager.getConnection
("jdbc:mysql://"+host+":3306/chessleaguedb", user, pass);
System.out.println("Successfully connected to chessleaguedb");
}
catch (Exception e)
{
// logic
}
return conn; // want the logic to handle opening a connection in this class and method, then pass it to a Connection object in my 'menu' class
}
}
此方法在另一个类中调用,并将返回值传递给从现在开始使用的新Connection对象。
public class DBAMenu
{
DatabaseConnection startConnection = new DatabaseConnection; // new instance of class that contains the aforementioned method establishConnection()
Connection conn = null;
conn = startConnection.establishConnection();
}
这里只打开一个数据库连接,还是两个,因为我正在返回值并将其传递给新的Connection
对象?
我尝试过使用NetBeans调试器,并且在此过程之后Connection
值保持不变,但不可否认,我对Netbeans调试器中值列的含义并不是100%。
(不使用Java EE,因此不能使用池,并且不能使用开源软件来处理池,因为工作必须是我自己的第2年本科项目)
答案 0 :(得分:1)
您只使用了一个连接,因为您只调用了一次conn = startConnection.establishConnection();
。
您需要实现关闭连接,否则会造成连接泄漏。
您可以使用以下内容:
try(Connection conn =startConnection.establishConnection()) {
//actual logic to perform db operations
} catch(SQLException sqlexe) {
//log exceptions
}
P.S。:像这样明确/手动处理连接不是最佳做法,而是尝试实现连接池。
答案 1 :(得分:1)
如果我将JDBC Connection对象的值传递给另一个Connection对象,那么只打开一个连接吗?
你没有拥有'另一个Connection
对象'。您有另一个类型为Connection
的引用。两个引用都引用相同的对象。