你做连接的封装类时,不能返回结果集sqlRst,在你的代码中,如有错的话,仍是return sqlRst; 其实你可以这样,单纯的一个封装类,你可以这样写,用一个isCON布尔变量,如果成功连接,则返回true,否则返回假,然后再用一个public getCON()的公共方法,在这个方法中返回con即可。

解决方案 »

  1.   

    这个封装感觉做得不爽,参考下面:package vote;import java.sql.*;public class conn {Connection sqlConn = null ;  //赋初值//不用保留这两个东东。
    //Statement sqlStmt; 
    //ResultSet sqlRst; //只需连接一次,保留连接对象
    public Connection getConn() {try {
      if( sqlConn == null ) {
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    sqlConn = java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1;DatabaseName=pubs;SelectMethod=direct","sa","sa");
      } 
      return sqlConn;
    }
    catch(java.lang.ClassNotFoundException e) {
    System.err.println( e.getMessage());
    }
    }
    public ResultSet executeQuery(String sql) {
    sqlRst = null;
    try {
      //不必一定要先调用getConn方法。
      if( sqlConn == null) {
        getConn();
    }
    sqlStmt = sqlConn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
    sqlRst = sqlStmt.executeQuery(sql);

    catch(SQLException ex) { 
    System.err.println(ex.getMessage());
    }
    return sqlRst;
    }
    }更多参考可以查阅ConnectionPool的相关技术。有很多现存的大师级的数据连接封装对象,拿来即可。^-^