------------------------ public class test { DBConnection dbconn; private ResultSet rs = null; public test() { dbconn = new DBConnection(); } ------------------------ 请教,是应该如上写法? 还是要如下写法更好?? public class test { DBConnection dbconn = new DBConnection(); private ResultSet rs = null; public test() { } ------------------------------
但是,我在SqlServer后台监控发现,刷新好几次a1.jsp页面后,Sqlserver有3-8个连接,为什么呢?
//testa.close();
%>
你上面不是注释掉了吗??应该调用它
//test.close();
//testa.close();
%>
你上面不是注释掉了吗??应该调用它
-------------------------------------但是test.java 与testa.java中的具体方法中已经dbconn.close()了阿。就算是把a1.jsp中的test.close(); testa.close();去掉注释,并且再次测试,发现还是每刷新一次都会新产生2个连接。N=N+2 如何处理??
public ResultSet get_prod() { DBConnection dbconn = new DBConnection();
ResultSet rs = null; try{
String sqlstr = "SELECT prod_id from vx_prod_dic_zhs";
rs = dbconn.runSelQuery(sqlstr); return rs;
}
catch(Exception e){
return rs;
}
}再从你的程序来看,每一次都调用某个getXXX方法都要打开一次数据库连接,这简直是性能上的巨大浪费,你应该在一个类中就使用一个数据库连接,然后用一个统一的close()方法来关闭,并把这个方法提供给使用者,要求他们使用完之后显式的关闭,按这样修改的test类应该是这样:
import java.sql.*;public class test {
DBConnection dbconn;
// private ResultSet rs = null;
public test() {
dbconn = new DBConnection();
} /********************************
* ?′DDSQLó??? £o2?è?ó??üD?????
* @param sql SQLó???
* @return int resultNum ?üD?μ?????êy
*/
public ResultSet get_prod() { try{
String sqlstr = "SELECT prod_id from vx_prod_dic_zhs";
rs = dbconn.runSelQuery(sqlstr); return rs;
}
catch(Exception e){
return rs;
}
} public String get_prod2() { String prod_id="";
try{
String sqlstr = "SELECT prod_id from vx_prod_dic_zhs";
rs = dbconn.runSelQuery(sqlstr);
if(rs!=null && rs.next()){
prod_id = rs.getString("prod_id");
}
}
catch(Exception e){
System.out.println("get_prod2:" + e.getMessage());
}
return prod_id;
} public String get_prod3() { String prod_id="";
try{
String sqlstr = "SELECT prod_id from vx_prod_dic_zhs";
rs = dbconn.runSelQuery(sqlstr);
if(rs!=null && rs.next()){
prod_id = rs.getString("prod_id");
}
}
catch(Exception e){
System.out.println("get_prod3:" + e.getMessage());
}
return prod_id;
} /********************************
* 1?±?á??ó
*/
public void close() {
if(rs!=null)
rs.close();
if(dbconn!=null)
dbconn.close();
}}
这样修改以后,同样的方法修改testa类,记住,在jsp文件显式地调用这些类的对象的close()方法
public class test {
DBConnection dbconn;
private ResultSet rs = null;
public test() {
dbconn = new DBConnection();
}
------------------------
请教,是应该如上写法? 还是要如下写法更好??
public class test {
DBConnection dbconn = new DBConnection();
private ResultSet rs = null;
public test() { }
------------------------------
两者并没有本质上的区别,只是上面的方法更为清晰直观,你在构造函数中初始化成员变量不是更好吗?
----------------
最新发现: 多次刷新页面后,
SqlServer连接数还在长. 已经18个了.