SQLServer2000,SP2,j2sdk1.4.2,Tomcat4.0; 
这个部分去年用的时候还好好的,可最近再次运行的时候就出现了错误了...机子中间重装过系统,现在也配置好了啊,Java,Tomcat运行都没问题。代码保证没变...纳闷了 
一个学生登陆在线考试的部分,说是数据库连接对象使用完没关吧,可这个是刚登陆就出问题,对数据库只执行了查询 ,代码:
Bean:
//实现一个javabean基类,封装了建立数据库联接,执行数据库表格查询,更新数据库表格内容,关闭数据库连接等功能,
//供它的子类直接使用。还提供一个toChinese()方法,主要用来中文数据的处理。package mybean;
import java.*;
import java.sql.*;public class ksxtdb{      
       static Connection  con = null;
       Statement stmt=null;                                       //用于将SQL语句发送到数据库
       ResultSet rs=null;
       //database的构造函数
       public ksxtdb(){
       }
       public static void getConnection(){
          try{
              //注册数据库驱动程序为微软提供的jdbc驱动
              String url = "jdbc:microsoft:sqlserver://";
              String serverName= "10.1.17.23";
              String portNumber = "1433";
              String databaseName= "TK1";
              String userName = "sa";
              String password = "tk";
              String selectMethod = "cursor";
              String getConnectionUrl=url+serverName+":"+portNumber+";databaseName="+databaseName+";selectMethod="+selectMethod+";";
              Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
              con = DriverManager.getConnection(getConnectionUrl,userName,password);            //建立连接            
          }
          catch(java.lang.ClassNotFoundException e){
                //方便调试程序,出错打印mydatabase()就知道在什么地方错了
                System.err.println("mydatabase():"+e.getMessage());
          }
          catch(java.sql.SQLException e){
                System.err.println("mydatabase"+e.getMessage());
          }
         
       }
  
      //关闭数据库连接
      public void closeConnection(){
          try{
              if(rs!=null)
                   rs.close();
              if(stmt!=null)
                   stmt.close();
              if(con!=null)
                   con.close();
          }
         catch(java.sql.SQLException e){
             System.err.println("mydatabase():"+e.getMessage());
         }
         rs=null;
         stmt=null;
         con=null;
      }
      
      //executeQuery方法用于进行记录的查询操作
      //入口参数为sql语句,返回ResultSet对象
      public ResultSet executeQuery(String sql){
          rs=null;
          try{
              if(con==null)
                  getConnection();
              if(con!=null){
                  stmt=con.createStatement();
                  //执行数据库操作
                  rs=stmt.executeQuery(sql);
              }
          }
          catch(SQLException ex){
              System.err.println("mydatabase.executeQuery:"+ex.getMessage()+" 4这错!");
          }
          return rs;
      }
      
      //executeUpdate方法用于进行add或者update记录的操作
      //入口参数为sql语句,成功返回true,否则为false
      public boolean executeUpdate(String sql){
          boolean bupdate=false;
          try{
              //建立数据库连接
              if(con==null)
                 getConnection();
              if(con!=null){
                 stmt=con.createStatement();
                 int rowCount=stmt.executeUpdate(sql);
                 //如果不成功,bupdate就会返回false
                 if(rowCount!=0)
                 bupdate=true;
              } 
          }
          catch(SQLException ex){
           //打印出错信息
              System.err.println("mydatabase.executeupdate:"+ex.getMessage());
          }
          return bupdate;
      }
      
      //toChinese方法用于将一个字符串进行中文处理
      //否则将会是???这样的字符串
      public static String toChinese(String strvalue){
         try{
             if(strvalue==null) return null;
             else{
                  strvalue=new String(strvalue.getBytes("ISO8859_1"),"GBK");
                  return strvalue;
             }
         }
         catch(Exception e){
             return null;
         }
      }
}
JSP代码:
<%@ page contentType="text/html; charset=GB2312" %> 
<%@ page language="java" import="java.sql.*" %>
<jsp:useBean id="conn" scope="page" class="mybean.ksxtdb"/>
<%!
   ResultSet rs1=null;
   ResultSet rs2=null;
   String ID="";
   String sql1="";
   String sql2="";
%>
<%
   ID=request.getParameter("studentid");
   if(ID==null || ID.equals("")){  //防止非法输入登录
       out.println("<center>");
   out.println("<h1>学号输入非法!请重新输入!</h1><br><br>");
   out.println("<a href=javascript:history.back()>返回</a>");
   out.println("</center>");
   return;
   }
   sql1="select * from Student_info where studentid='"+ID+"'";
   sql2="select * from System_parameter where studentid='"+ID+"'";
   try{
        rs1=conn.executeQuery(sql1);
        rs2=conn.executeQuery(sql2);
//如果是非法学号,回到登录界面
if(!rs1.next()){
%>
<jsp:forward page="index.jsp">
                         <jsp:param name="errmsg" value="Invalid Student ID!"/>
</jsp:forward>
<%     
}
        if(!rs2.next()){
            session.setAttribute("studentlogin",ID);//将学生登录学号保存到session中
                    session.setMaxInactiveInterval(60*60*24);
                    response.sendRedirect("../exam/login.jsp");
        }else{
            if(rs2.getInt("state")==1){
                //添加强行关闭窗口代码
                out.println("<center>");
                out.println("<br><br><hr><h1>您已正常提交试卷,请退出该系统!</h1><br><br>");
                %>
                  <script language="javascript">
                              document.title="关闭窗口";
                          </script>
                <%
                out.println("<a href=javascript:window.close() size=4>关闭窗口</a>");
                out.println("</center>");     
            }
            else{
                session.setAttribute("studentlogin",ID);//将学生登录学号保存到session中
                        session.setMaxInactiveInterval(60*60*24);
                        response.sendRedirect("../exam/login.jsp");
            }
        }
   }catch(Exception e){ 
        System.out.println(e.toString()); 
          
%>
       <jsp:forward page="../public/dberror.jsp">
             <jsp:param name="e" value="<%=e%>"/>
      </jsp:forward>
<%
   }
%>
学生登陆后,如果学号错误,也能正常提示Invalid Student ID!,如果正确,登陆掉转到check.jsp时就直接提示错误信息: 
IE里显示:数据库操作错误信息:java.lang.NullPointerException 
Tomcat里就会出现:[Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt 4这错!(因为错误提示的地方标上4这错了),在Bean的查询部分里面。 
自己调的时候加了个RS1.close(),还是这个错误...
怕是驱动的问题,用ODBC连接时出现:Tomcat里显示:连接占线导致另一个hstmt ,IE里显示:数据库操作错误信息:java.lang.NullPointerException 另外:防火墙已关闭,补丁已从SP3打到SP4,SQLServer2000是混合模式认证,而且TCP/IP端口设置为1433。在运行里面输入netstat -a一闪而过,不明白什么意思。
着急啊....