我用weblogic + jbuilder + mssqlsever2000 采用池联接。我们的JDBC联系数不断在增加(根我判断,是因为我用完一个方法以后,这个连接还是标识为忙。)。但是我已经对它作了释放处理了,不过还是没有用啊。
我从中抽出一部份代码如下
package com.csbook.documentsystem;
import javax.naming.*;
import javax.sql.*;
import java.io.*;
import java.sql.*;
import java.util.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.*;
public class Vistit {
Context ctx = null;
DataSource ds = null;
SysLog log = null;
ChangeEncoding ce = null;
//构造函数
public Vistit() {
//从连接池中获取数据库连接
try {
ctx = new InitialContext();
ds = (DataSource) ctx.lookup("MyDataSource");
}
catch (NamingException e) {
e.printStackTrace();
}
// 建立一个日志类的实例
log = new SysLog();
}
public void addInFactoryReg(String no, String name, String company,
String people, String reason, String certif) {
Connection con = null;
PreparedStatement ps = null;
String temptime = "";
String intime = "";
//temptime = TimeString.getNowTime("HH:mm:ss");
//intime =temptime.substring(8);
//System.out.println("company"+company);
try {
StringTokenizer st = null;
ArrayList temp = getTemp();
Object data[] = temp.toArray();
String card_number = "";
System.out.println("data.length" + data.length);
for (int i = 0; i < data.length; i++) {
st = new StringTokenizer((String) data[i]);
card_number = ce.changeCharset(st.nextToken());
int card_no = getNoCount("card", "card_no");
card_no++;
addInFactoryReg(card_no, no, card_number);
changeState(card_number);
}
//String sqlInsert = "insert into visit(visit_no,visit_mark,visit_name,visit_company,visit_reason,visit_certif,visit_intime) values (" +no+ "," +mark+ "," +name+ "," +company+ "," +reason+ "," +certif+ "," +intime+ ")";
// String sqlInsert = "insert into visit(visit_no,visit_mark,visit_name,visit_company,visit_peopleCount,visit_reason,visit_certif,visit_intime) values (?,?,?,?,?,?,?,'" +intime+ "')";
String sqlInsert = "insert into visit(visit_no,visit_name,visit_company,visit_peopleCount,visit_reason,visit_certif) values (?,?,?,?,?,?)";
con = ds.getConnection();
ps = con.prepareStatement(sqlInsert);
ps.setString(1, no);
ps.setString(2, name);
ps.setString(3, ce.changeCharset(company));
ps.setString(4, people);
ps.setString(5, ce.changeCharset(reason));
ps.setString(6, certif);
//System.out.println("sqlInsert" + sqlInsert);
//System.out.println("no" + "visit_no");
ps.executeUpdate();
delData();
}
catch (Exception e) {
e.printStackTrace();
}
finally {
Close.connnectionClose(con);
Close.prepareStatementClose(ps);
}
}
package com.csbook.documentsystem;
import javax.sql.*;
import java.sql.*;
public class Close {
public void close(){
}
public static void connnectionClose(Connection con){
if (con != null)
try {
con.close();
}
catch (SQLException ignore) {}
}
public static void prepareStatementClose(PreparedStatement ps){
if(ps != null)
try{
ps.close();
}
catch(SQLException e) {}
}
public static void resultSetClose(ResultSet rs){
if(rs != null){
try{
rs.close();
}
catch(SQLException e){}
}
}