当前位置:编程学习 > JSP >>

关于jsp页面跟mysql数据库连接关闭的问题

我写了个jsp页面连接到了mysql数据库,正常浏览时都正常,慢慢刷新也很正常,但只要我连续刷新就出现了下面异常 Data source rejected establishment of connection, message from server: "Too many connections" 大家帮我看看:这就是我写的数据库连接类了 package DB; import java.sql.*; public class connDB { public Connection conn = null; public Statement stmt = null; public ResultSet rs = null; private static String dbClassName = "com.mysql.jdbc.Driver"; private static String dbUrl = "jdbc:mysql://localhost:3306/shopping"; private static String dbUser = "root"; private static String dbPwd = "root"; public static Connection getConnection() { Connection conn = null; try { Class.forName(dbClassName).newInstance(); conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd); } catch (Exception ee) { ee.printStackTrace(); } if (conn == null) { System.err.println( "警告: DbConnectionManager.getConnection() 获得数据库链接失败.\r\n\r\n链接类型:" + dbClassName + "\r\n链接位置:" + dbUrl + "\r\n用户/密码" + dbUser + "/" + dbPwd); } return conn; } /* *功能:执行查询语句 */ public ResultSet executeQuery(String sql) { try { conn = getConnection(); stmt = conn.createStatement(); rs = stmt.executeQuery(sql); } catch (SQLException ex) { System.err.println(ex.getMessage()); } return rs; } /* *功能:关闭数据库的连接 */ public void close() { try { if (rs != null) { rs.close(); } } catch (Exception e) { e.printStackTrace(System.err); } try { if (stmt != null) { stmt.close(); } } catch (Exception e) { e.printStackTrace(System.err); } try { if (conn != null) { conn.close(); } } catch (Exception e) { e.printStackTrace(System.err); } } } 我的jsp页面代码如下: 这是头部代码: <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %> <%@ page import="DB.connDB"%> <%@ page import="DB.chStr"%> <% connDB conn = new connDB(); ResultSet rs_new = conn .executeQuery("select ID,GoodsName,nowprice,introduce,picture,sjID from tb_goods order by ID desc limit 0,12"); %> <% ResultSet rs_manager = conn.executeQuery("select managerName,sjID from tb_manager where shenhe =1 order by sjID desc limit 0,4"); %> <% ResultSet rs_bbs=conn.executeQuery("select * from tb_bbs order by ID desc limit 0,15"); %> <html> ******** 这里是我的页面内容 </html> 最后是关闭数据库连接: <% conn.close();//调用了connDB类的这个方法难道不是已经把所有的连接Connection ,Statement , ResultSet 都关掉了吗,为何还会出现那种异常啊,还是说我这样写写错了 %>
答案:你这样写是不对的, 你应该在每次查询结束以后都关闭连接。也就是在查询功能的方法中调用关闭连接的函数。
欢迎追问,不明白的我再进一步回答。
其他:增大mysql连接数,或者使用连接池技术。 jsp 页面是执行可能是多线程的。 你 连续刷新是, jsp 只同时执行的。 
会建立多个数据库的链接。 增大连接数,默认是15 

上一个:一个关于jsp还是php语言选择的问题
下一个:麻烦哪位有关于jsp,ajax等的电子书能给我发下么?最近在学习这方面。black_tulip2011@hotmail.com

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,