我将问题明了一下package yzxbbs.db;import java.sql.*;
import java.util.StringTokenizer;
public class DbTrans {  public static Connection conn;
  Statement stmt;
  boolean isAutoCommit;  /**
   * 构造函数
   */
  public DbTrans(){
      initConnection();
  }  /**
   * 带参数的构造函数
   * @param conn 连接
   */
  public DbTrans(Connection conn){
      this.conn = conn;
  }  /**
   * 初始化建立连接
   */
  private void initConnection(){//这些都是正确的
      try{
          if(conn == null){
              DBConnectionManager connMgr=DBConnectionManager.getInstance();
              conn = connMgr.getConnection("mysql");
          }
      }
      catch(Exception ex){
          System.out.println("Can not get new Connection"+ex.getMessage());
      }
  }public ResultSet executeQuery(String sql) throws SQLException {
      ResultSet rs = null;
      try {
          stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
          rs = stmt.executeQuery(sql);
      }
      catch (SQLException ex) {
          ex.printStackTrace();
          System.out.println("dbTrans.executeQuery:"+ex.getMessage());
          throw ex;
      }
      return rs;
  }    public static void main(String args[]){
     DbTrans DbTrans1 = new DbTrans();
     String userID = "";
     ResultSet rs1 = null;
     String sql="select max(ID)+1 as numMaxID from guestuser";
     try{
     rs1 = DbTrans1.executeQuery(sql);
          if (rs1.next()) {
              userID = rs1.getString("ID");
          }
          rs1.close();
        }catch(Exception e){
         e.printStackTrace();
        }
          System.out.println(userID);
    }
}main函数捕捉错误,就是executeQuery这里报NullPointerException

解决方案 »

  1.   

    public int guestLogin() {
          int guestID = getGuestMaxID();
          while (!addGuest(guestID)) {
              guestID = getGuestMaxID();
          }
          return guestID;
      }  public int getGuestMaxID() {
          int numMaxID = 1;
          SQL = "select max(ID)+1 as numMaxID from guestuser";
          try {
              rs = myDbTrans.executeQuery(SQL);
              if (rs.next()) {
                  numMaxID = rs.getInt("numMaxID");
              }
              rs.close();
              if (numMaxID == 0) {
                  numMaxID = 1;
              }
          }
          catch (SQLException e) {e.printStackTrace();
          }
          return numMaxID;
      }  public ResultSet executeQuery(String sql) throws SQLException {
          ResultSet rs = null;
          try {
              stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
              rs = stmt.executeQuery(sql);
          }
          catch (SQLException ex) {
              ex.printStackTrace();
              System.out.println("dbTrans.executeQuery:"+ex.getMessage());
              throw ex;
          }
          return rs;
      }