关于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