连接池问题!请指教!
在server.xml里的context和web.xml都已配置完成。
这是实现的BEAN:
package balancepack;
import java.io.*;
import java.util.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
public class sqlBean{
public Connection conn=null;
Statement stmt=null;
public ResultSet rs=null;
public sqlBean(){///构造函数
}
public int executeInsert(String sql){
int num=0;
try{
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/webbalance");
conn=ds.getConnection();
Statement stmt=conn.createStatement();
num=stmt.executeUpdate(sql);
}
catch (NamingException ne) {
System.out.println("Initial DataSource error.");
ne.printStackTrace();
} catch (SQLException e) {
System.out.println("SQL SERVER: " + e);
e.printStackTrace();
System.out.print("Connection Full!");
}
CloseDataBase();
return num;
}
//display data
public ResultSet executeQuery(String sql){
rs=null;
try{
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/webbalance");
conn=ds.getConnection();
Statement stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}
catch (NamingException ne) {
System.out.println("Initial DataSource error.");
ne.printStackTrace();
} catch (SQLException e) {
System.out.println("SQL SERVER: " + e);
e.printStackTrace();
System.out.print("Connection Full!");
}
CloseDataBase();
return rs;
}
// delete data
public int executeDelete(String sql){
int num=0;
try{
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/webbalance");
conn = ds.getConnection();
Statement stmt=conn.createStatement( );
num=stmt.executeUpdate(sql);
}
catch (NamingException ne) {
System.out.println("Initial DataSource error.");
ne.printStackTrace();
} catch (SQLException e) {
System.out.println("SQL SERVER: " + e);
e.printStackTrace();
System.out.print("Connection Full!");
}
CloseDataBase();
return num;
}
//////////////////
public void CloseDataBase(){
try{
conn.close();
}
catch(Exception end){
System.err.println("执行关闭Connection对象有错误:"+end.getMessage( ) );
System.out.print("执行执行关闭Connection对象有错误:有错误:"+end.getMessage()); //输出到客户端
}
}
}
现在在用连接池读取数据时提示如下错误:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Object has been closed.
请问这是为什么?还有,用到连接池的BEAN这样写是否正确和妥当?
刚看到篇帖子说不能直接把CON CLOSE掉,是这样么?
有经验的人帮忙指点下,谢谢了!