我应该在JSP中继续打开和关闭连接

时间:2012-10-25 16:20:13

标签: java sql jsp

我创建了一个名为MySQL的类。

这个类只包含一个方法,它将我连接到我的数据库。

public static void Connect() {
    try {
        Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException ex) {
        System.out.println(ex.getMessage());
    }
    try {

        connection = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/"+database,username,password);

    } catch (SQLException ex) {
        System.out.println(ex.getMessage());
    }
}

现在,当我需要在JSP页面内部进行连接时,我会写这个。

<% MySQL.Connect();
   Statement stmt = MySQL.getConnection().createStatement();
   ResultSet rset = stmt.executeQuery("....");
   //Some codes here
   //Then I close both rset and stmt
   rset.close();
   stmt.close();
%>

我也应该关闭连接吗?请注意,在加载页面时会执行更多查询,我应该为所有查询设置1个连接,还是为每个查询设置1个连接然后关闭它?

2 个答案:

答案 0 :(得分:1)

理想情况下,您只需在渲染页面的过程中使用一个连接,然后在页面末尾将其关闭。

这样可以确保一旦开始呈现页面,就可以完成,因为连接池耗尽而没有中断连接(并且您应该使用连接池而不是建立连接如果您重视页面性能,请直接进行。

答案 1 :(得分:0)

1,直接在jsp中获取连接并不是一个好主意。

2,无需为每个要在同一页面中执行的查询创建单独的连接。这也是基于您对该连接所执行的操作。

3,无论何时打开连接,都必须关闭连接。否则会发生泄漏 是问题。

4,在关闭连接之前,请确保它们不是null。因此,无效检查很重要,否则可能会出现nullpointer异常。

5,关闭finally块中的连接,这样当对象被垃圾收集时,根据连接不再进行操作。关闭连接是否在finally块中工作。 *