以前是纯静态页面,网站没事,现在我改回了动态的,,就报连接数已满,网站就不行了,像这个肯定是代码的问题了,大家帮我看看,有什么问题???我连接都是关闭了的啊,是不是这个连数据库的类没写好,这个是网上找的。package com.ttkd.dao;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;import org.apache.commons.dbcp.ConnectionFactory;
import org.apache.commons.dbcp.DriverManagerConnectionFactory;
import org.apache.commons.dbcp.PoolableConnectionFactory;
import org.apache.commons.dbcp.PoolingDriver;
import org.apache.commons.pool.ObjectPool;
import org.apache.commons.pool.impl.GenericObjectPool;public class DBConnection {
private static String
driver="com.microsoft.sqlserver.jdbc.SQLServerDriver",//驱动
url = "jdbc:sqlserver://localhost:1433;DatabaseName=test",//URL
Name="sa",//用户名
Password="sa";//密码
private static Class driverClass = null;
private static ObjectPool connectionPool = null; public DBConnection(){
}
/**
* 初始化数据源
*/
private static synchronized void initDataSource() {
if (driverClass == null) {
try {
driverClass = Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
} /**
* 连接池启动
* @throws Exception
*/
public static void StartPool() {
//loadProperties();
initDataSource();
if (connectionPool != null) {
ShutdownPool();
}
try {
connectionPool = new GenericObjectPool(null);
ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(url, Name, Password);
PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, connectionPool, null, null, false, true);
Class.forName("org.apache.commons.dbcp.PoolingDriver");
PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
driver.registerPool("dbpool", connectionPool);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 释放连接池
*/
public static void ShutdownPool() {
try {
PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
driver.closePool("dbpool");
} catch (SQLException e) {
e.printStackTrace();
}
} /**
* 取得连接池中的连接
* @return
*/
public static Connection getConnection() {
Connection conn = null;
if(connectionPool == null)
StartPool();
try {
conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:dbpool");
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* 获取连接
* getConnection
* @param name
* @return
*/
public static Connection getConnection(String name){
return getConnection();
}
/**
* 释放连接
* freeConnection
* @param conn
*/
public static void freeConnection(Connection conn){
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 释放连接
* freeConnection
* @param name
* @param con
*/
public static void freeConnection (String name,Connection con){
freeConnection(con);
}
} public String getShengNameById(String shengId) throws Exception {
conn = DBConnection.getConnection();
String shengName = "";
sql = "select shengname from sheng where shengid=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, shengId);
rs = ps.executeQuery();
while (rs.next()) {
shengName = rs.getString("shengname");
} } catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
conn.close();
}
return shengName;
}
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;import org.apache.commons.dbcp.ConnectionFactory;
import org.apache.commons.dbcp.DriverManagerConnectionFactory;
import org.apache.commons.dbcp.PoolableConnectionFactory;
import org.apache.commons.dbcp.PoolingDriver;
import org.apache.commons.pool.ObjectPool;
import org.apache.commons.pool.impl.GenericObjectPool;public class DBConnection {
private static String
driver="com.microsoft.sqlserver.jdbc.SQLServerDriver",//驱动
url = "jdbc:sqlserver://localhost:1433;DatabaseName=test",//URL
Name="sa",//用户名
Password="sa";//密码
private static Class driverClass = null;
private static ObjectPool connectionPool = null; public DBConnection(){
}
/**
* 初始化数据源
*/
private static synchronized void initDataSource() {
if (driverClass == null) {
try {
driverClass = Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
} /**
* 连接池启动
* @throws Exception
*/
public static void StartPool() {
//loadProperties();
initDataSource();
if (connectionPool != null) {
ShutdownPool();
}
try {
connectionPool = new GenericObjectPool(null);
ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(url, Name, Password);
PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, connectionPool, null, null, false, true);
Class.forName("org.apache.commons.dbcp.PoolingDriver");
PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
driver.registerPool("dbpool", connectionPool);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 释放连接池
*/
public static void ShutdownPool() {
try {
PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
driver.closePool("dbpool");
} catch (SQLException e) {
e.printStackTrace();
}
} /**
* 取得连接池中的连接
* @return
*/
public static Connection getConnection() {
Connection conn = null;
if(connectionPool == null)
StartPool();
try {
conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:dbpool");
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* 获取连接
* getConnection
* @param name
* @return
*/
public static Connection getConnection(String name){
return getConnection();
}
/**
* 释放连接
* freeConnection
* @param conn
*/
public static void freeConnection(Connection conn){
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 释放连接
* freeConnection
* @param name
* @param con
*/
public static void freeConnection (String name,Connection con){
freeConnection(con);
}
} public String getShengNameById(String shengId) throws Exception {
conn = DBConnection.getConnection();
String shengName = "";
sql = "select shengname from sheng where shengid=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, shengId);
rs = ps.executeQuery();
while (rs.next()) {
shengName = rs.getString("shengname");
} } catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
conn.close();
}
return shengName;
}
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
conn.close();
}
应该放在连接类里面似乎
if(conn != null && !conn.isClosed()){ // 没有关闭就关闭
try {
conn.close();
} catch (SQLException e) {
//e.printStackTrace();
throw e;
}
}
}
整体还行