我在我的 Java 应用程序中创建了一个 getDBConnection 方法。这将返回一个连接对象,因此我没有在此方法本身中关闭此连接。
现在,我定期从应用程序中的各种方法调用此方法,并在 try - finally 块中关闭它们。我认为这应该在使用后释放连接。但是,我看到在 MySQL 管理员的服务器连接选项卡中打开了大量连接(大约 50 个)。
//Defining a method to retrieve a database connection
// PropDemo is a properties class that retrieves Database related values from a file
public Connection getDBConnection() {
//Instantiating the Properties object
PropDemo prop = new PropDemo();
Connection con = null;
// Retrieving values from the parameters.properties file
String JdbcDriver = prop.getMessage("JdbcDriver");
String JdbcUrlPrefix = prop.getMessage("JdbcUrlPrefix");
String DBIP = prop.getMessage("DBIP");
String DBName = prop.getMessage("DBName");
String DBUser = prop.getMessage("DBUser");
String DBPassword = prop.getMessage("DBPassword");
try {
// Loading and instantiating the JDBC MySQL connector driver class
Class.forName(JdbcDriver).newInstance();
con = DriverManager.getConnection(JdbcUrlPrefix + DBIP + "/" + DBName, DBUser, DBPassword);
if (con.isClosed())
Logger.log("Connection cannot be established", "vm");
} catch (Exception e) {
Logger.log("Exception: " + e, "vm");
Logger.log(Logger.stack2string(e), "vm");
}
return con;
}
我还将关闭相关的 ResultSet 和 Statement 对象。这里可能缺少什么?
出于效率和安全原因,我计划用 PreparedStatements 替换所有 Statements。这会有很大帮助吗?还有什么可以做的?
编辑:这只是一个核心 java 应用程序,它通过 MySQL-JDBC 连接器反复查询 MySQL 数据库中某些字段的更改。我没有使用 Spring 或 Hibernate 等任何框架。