HTTP状态 500 - 内部服务器错误

 

 

package com.mingrisoft.dao;

import java.sql.Connection;                        //表示连接到某个数据库的连接
import java.sql.DriverManager;                    //用来获取数据库连接
import java.sql.PreparedStatement;                //用来执行SQL语句
import java.sql.ResultSet;                        //封装查询结果集
import java.sql.SQLException;                    //异常处理类


public class DB {
    private Connection con;                            //声明一个Connection对象
    private PreparedStatement pstm;                    //声明一个PreparedStatement对象
    private String user="sa";                        //登录数据库的默认用户名
    private String password="1";                        //登录数据库的密码
    private String className="com.microsoft.sqlserver.jdbc.SQLServerDriver";        //数据库驱动类路径
    private String url="jdbc:sqlserver://localhost:1433;DatabaseName=db_CityInfo";    //数据库URL
    
    public DB(){                                    //DB类的构造方法
        try{                                        //必须使用try-catch语句捕获加载数据库驱动时可能发生的异常
            Class.forName(className);                //加载数据库驱动
        }catch(ClassNotFoundException e){            //捕获ClassNotFoundException异常
            System.out.println("加载数据库驱动失败!");
            e.printStackTrace();                    //输出异常信息
        }
    }


    /**创建数据库连接*/
    public Connection getCon(){
        try {
            con=DriverManager.getConnection(url,user,password);    //建立连接,连接到由属性url指定的数据库URL,
                                                            //并指定登录数据库的用户名和密码
        } catch (SQLException e) {
            System.out.println("创建数据库连接失败!");
            con=null;
            e.printStackTrace();
        }
        return con;
    }

    
    public void doPstm(String sql,Object[] params){
        if(sql!=null&&!sql.equals("")){
            if(params==null)params=new Object[0];
            con = getCon();                                            //调用getCon()方法获取数据库连接
            if(con!=null){
                try{
                    pstm=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                                ResultSet.CONCUR_READ_ONLY);
                    for(int i=0;i<params.length;i++){
                        pstm.setObject(i+1,params[i]);
                    }
                    pstm.execute();                            //执行SQL语句
                }catch(SQLException e){
                    System.out.println("doPstm()方法出错!");
                    e.printStackTrace();                        //输出错误信息
                }
            }
        }
    }

    
    public ResultSet getRs() throws SQLException{
        return pstm.getResultSet();            //调用PreparedStatement类对象的getResultSet()方法返回ResultSet对象
    }

    public int getCount() throws SQLException{
        return pstm.getUpdateCount();        //调用PreparedStatement类对象的getResultSet()方法返回影响的记录数
    }

    public void closed(){
        try{
            if(pstm!=null)
                pstm.close();            
        }catch(SQLException e){
            System.out.println("关闭pstm对象失败!");
            e.printStackTrace();
        }
        try{
            if(con!=null){
                con.close();
            }
        }catch(SQLException e){
            System.out.println("关闭con对象失败!");
            e.printStackTrace();
        }
    }
}

   public ResultSet getRs() throws SQLException{
        return pstm.getResultSet();            //调用PreparedStatement类对象的getResultSet()方法返回ResultSet对象
    }

 

这里调用pstm时,还没有给它赋值,所以空指针错误