java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Connection reset
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at s2jsp.bysj.dao.BaseDao.getConn(BaseDao.java:24)
at s2jsp.bysj.dao.NewsDao.findNewsByID(NewsDao.java:60)
at org.apache.jsp.admin.managerNews_jsp._jspService(managerNews_jsp.java:186)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
2012-1-9 7:18:40 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at s2jsp.bysj.dao.NewsDao.findNewsByID(NewsDao.java:61)
at org.apache.jsp.admin.managerNews_jsp._jspService(managerNews_jsp.java:186)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)

解决方案 »

  1.   

    java.lang.NullPointerException
    at s2jsp.bysj.dao.NewsDao.findNewsByID(NewsDao.java:61)
    看这里
      

  2.   

    链接失效时继续使用。validateQuery没有设定。
      

  3.   

    [Microsoft][SQLServer 2000 Driver for JDBC]Connection reset
    这个问题出了之后才会有java.lang.NullPointerException
    at s2jsp.bysj.dao.NewsDao.findNewsByID(NewsDao.java:61)
    这个问题,也就是说,下边这个问题可能是第一个问题引起的,我现在就想解决第一个问题
      

  4.   

    at java.sql.DriverManager.getConnection(Unknown Source)
    at s2jsp.bysj.dao.BaseDao.getConn(BaseDao.java:24)
    数据库连接失败后引发的空指针异常,先检查连接是否能成功
      

  5.   

    数据库驱动先放下;应该先处理空指针异常:
    java.lang.NullPointerException
    at s2jsp.bysj.dao.NewsDao.findNewsByID(NewsDao.java:61)
    再测试;
      

  6.   

    1.看jar有没有
    2.数据库连接URL看看写错没?
      

  7.   


    那块应该不会有问题
    public List findNewsByID (int  page)
    {
    News news=null;
    List list=new ArrayList();
       int num=0;
     
    try {
      
    String sql="select top 10 * from NEWS where newsId not in (select top "+(page-1)*10+" newsId from News order by newsId desc) order by newsId desc ";

    conn = BaseDao.getConn();
    pstmt = conn.prepareStatement(sql);
    System.out.print(sql);
    rs = pstmt.executeQuery();
    while (rs.next()) {
      news=new News();
      news.setNewsID(rs.getInt("newsID"));
      news.setTitle(rs.getString("title"));
                news.setContent(rs.getString("content"));
                news.setType(rs.getInt("type"));
                news.setWriterDate(rs.getString("writerDate"));
                news.setTj(rs.getInt("tj"));
                list.add(news);
    }
    } catch (SQLException e) {
    e.printStackTrace(); 
    }finally
    {
    this.closeAll(conn, pstmt, rs);
    }
    return list; }
    就这个方法
      

  8.   

    都有的,url不会写错,因为这个问题只是偶尔出现,并不是一直是这样
      

  9.   

    这个conn = BaseDao.getConn();
    是怎样实现的?测试下把conn做为局部变量,每次请求创建一个新的,并同步BaseDao.getConn();
      

  10.   


    public static Connection getConn()
    {
    Connection conn=null;
    try {

    // Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    // conn = DriverManager.getConnection("jdbc:odbc:company","sa","sa");
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1434;DataBaseName=company","sa","sa");
    } catch (ClassNotFoundException e) { e.printStackTrace();
    } catch (SQLException e) { e.printStackTrace();
    }
    return conn;
    }
    就是数据库的链接了
      

  11.   

    把这里改下:
    conn = BaseDao.getConn();
    if(conn == null){
        //process   
    }
    你上面的错误是getConn()返回了null导致
    conn.prepareStatement(sql);
    出现异常;
      

  12.   

    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Connection reset
    是getConn()的异常;至于怎么解决,偶也不是很清楚,
    你可以在
    return conn;
    时:
    return conn == null ? getConn() : conn;
      

  13.   

    偶的理解是不是存在并发问题:
    可以尝试把public static Connection getConn()
    作为同步方法:
    public synchronized static Connection getConn()
      

  14.   

    我做了如下测试:
    public class BaseDao {
    public final static String Driver = "";
    public final static String Url = "";
    public final static String Name = "";
    public final static String Dbpass = "";
    public   static Connection getConn()
    {
    Connection conn=null;
    try {

    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1434;DataBaseName=company","sa","sa");
    } catch (ClassNotFoundException e) { e.printStackTrace();
    } catch (SQLException e) { e.printStackTrace();
    }
    return conn;    
    } public void closeAll(Connection conn,PreparedStatement pstmt,ResultSet rs)
    {
    if(rs!=null)
    {
    try {
    rs.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    if(pstmt!=null)
    {
    try {
    pstmt.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    if(conn!=null)
    {
    try {
    conn.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }

    public int executeSQL(String preparedsql,String[] param)
    {
    Connection conn=null;
    int num=0;
    PreparedStatement pstmt=null;
    conn=this.getConn();
    String sql="";
    try {
    pstmt=conn.prepareStatement(sql);
    num=pstmt.executeUpdate();
    } catch (SQLException e) {
    e.printStackTrace();
    }finally
    {
    this.closeAll(conn, pstmt, null);
    }
    return num;
    }
    public static void main(String[]args)
    {   BaseDao bd=new BaseDao();

    System.out.println(bd.getConn());
    System.out.println(bd.getConn());
    System.out.println(bd.getConn());
    System.out.println(bd.getConn());
    System.out.println(bd.getConn());
    System.out.println(bd.getConn());
    System.out.println(bd.getConn());
    System.out.println(bd.getConn());
    System.out.println(bd.getConn());

    }

    }运行这个页面
    com.microsoft.jdbc.sqlserver.SQLServerConnection@c51355
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Connection reset
    at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
    at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
    at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at s2jsp.bysj.dao.BaseDao.getConn(BaseDao.java:16)
    at s2jsp.bysj.dao.BaseDao.main(BaseDao.java:77)
    null
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Connection reset
    at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
    at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
    at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at s2jsp.bysj.dao.BaseDao.getConn(BaseDao.java:16)
    at s2jsp.bysj.dao.BaseDao.main(BaseDao.java:78)
    null
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Connection reset
    at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
    at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
    at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at s2jsp.bysj.dao.BaseDao.getConn(BaseDao.java:16)
    at s2jsp.bysj.dao.BaseDao.main(BaseDao.java:79)
    null
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Connection reset
    at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
    at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
    at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at s2jsp.bysj.dao.BaseDao.getConn(BaseDao.java:16)
    at s2jsp.bysj.dao.BaseDao.main(BaseDao.java:80)
    null
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Connection reset
    at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
    at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
    at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at s2jsp.bysj.dao.BaseDao.getConn(BaseDao.java:16)
    at s2jsp.bysj.dao.BaseDao.main(BaseDao.java:81)
    null
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Connection reset
    at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
    at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
    at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at s2jsp.bysj.dao.BaseDao.getConn(BaseDao.java:16)
    at s2jsp.bysj.dao.BaseDao.main(BaseDao.java:82)
    null
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Connection reset
    at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
    at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
    at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at s2jsp.bysj.dao.BaseDao.getConn(BaseDao.java:16)
    at s2jsp.bysj.dao.BaseDao.main(BaseDao.java:83)
    null
    com.microsoft.jdbc.sqlserver.SQLServerConnection@1855af5为什么出现这种问题呢?9次只有两个链接上
      

  15.   

    还有我用的是SQLServer 2005这里为什么是2000呢?
      

  16.   

    你不是一步步的测试发现了很多认为没有问题却有问题的地方;
    如果是驱动错了,就下载SQLServer 2005的驱动jar;
    替换测试就可以了;