gpt4 book ai didi

java - JSP mysql 连接没有关闭,但是在 Java 类中它会关闭

转载 作者:行者123 更新时间:2023-11-29 17:48:22 24 4
gpt4 key购买 nike

我正在使用 Java、JSP、MySQL 开发 Web 应用程序。我无法在 JSP 中关闭 MySQL 连接,但它可以在 Java 类中工作。我有以下代码:

A.首先,我有一个类在运行 get 查询时获取 ResultSet,如下所示:

public static ResultSet get(String query) {
ResultSet rs = null;
try {
Class.forName(JDBC_DRIVER);
connection = DriverManager.getConnection(DB_URL + DB_NAME, USERNAME, PASSWORD);
statement = connection.createStatement();
rs = statement.executeQuery(query);
} catch (ClassNotFoundException | SQLException ex) {
ex.printStackTrace();
}
return rs;
}

B.我有一个 java 类,使用上面的方法返回对象中的 MySQL 结果,如下所示:

public static <E> E getByFromOtherRS(E element, List<String> columns, String tableName, String whereColumn, String whereValue, Method getFromRS) {
try {
String query = "Select * from " + tableName + " where " + whereColumn + "='" + whereValue + "';";
ResultSet rs = SQLAccessor.get(query);
while (rs.next()) {
try {
element = (E) getFromRS.invoke(element, rs);
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (SQLException ex) {

} finally {
try {
SQLAccessor.getConnection().close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return element;
}

C.然后我在下面的类(class)中使用上面的内容。当我运行 main 方法时,我得到了预期的结果。另外,当我这样做时

show status like '%onn%'

在 MySQL shell 中,Threads_connected 的数量与运行代码之前相同。

public static void main(String[] args) {
Gson gson = new Gson();
System.out.println(gson.toJson(getUserByUsername()));
}

public static User getUserByUsername() {
User user = Accessor.getByFromOtherRS(new User(), Accessor.getColumns("user"), "user", "username", "linda", Accessor.getFromRSMethod(UserAccessor.class));
return user;
}

D.问题出在 JSP 上。我在 JSP 中有以下代码。我正确地获取了用户电子邮件,但问题出在 MySQL - 当我运行与上面相同的命令时,Threads_connected 的数量现在多了 17 个。

    <%

User user = DatabaseAccessor.getUserByUsername();
System.out.println(user.getEmail());
%>

在这方面的任何帮助将不胜感激。

最佳答案

看不到完整的代码...

鉴于代码片段,如果您在 finally block 中对连接发出“close”命令以确保其关闭,效果会更好。

finally {
if (connection!=null) { connection.close();}
}

关于java - JSP mysql 连接没有关闭,但是在 Java 类中它会关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49614486/

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