小弟菜鸟我初学jsp,最近做了一个小小的系统们,但是问题却出现不少,我是使用jsp+javabean+jdbc结构的,连接数据库的类我是这样编写的:
package util;import javax.servlet.http.*;
import java.sql.*;
public class Dbcon implements HttpSessionBindingListener{
  public void valueBound(HttpSessionBindingEvent arg0) {
// 当变量加入Session时执行此函数

}  public void valueUnbound(HttpSessionBindingEvent arg0) {
// Session变量关闭时执行此函数

}
private Connection con=null;
private Statement sta=null;

  public Dbcon() {
Bulidconnection();
}  private void Bulidconnection() {
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();//加载驱动程序
 String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=BookStore";
 String user="sa";
 String password="123";
 con=DriverManager.getConnection(url,user,password);//连接数据库
}
catch(Exception e){
System.out.println(e.toString());
}

}

  public Connection getconnection(){
if(con==null)//如果con为null重新连接
    Bulidconnection();
return con;
}

  public ResultSet executequery(String sql){
ResultSet rs=null;
try{
 sta=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
 rs=sta.executeQuery(sql);//执行查询sql语句,返回一个结果集对象
}catch(SQLException ex){
System.out.println(ex.toString());
}
return rs;
}

  public int executeupdate(String sql){
int rs=0;
try{
sta=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=sta.executeUpdate(sql);//执行插入,修改,删除sql语句,返回值是受到此次影响的记录条数(整型)

}
catch(SQLException ex){
System.out.println(ex.toString());
}
return rs;
}

  public void close(){
try{

con.close();//关闭con
sta.close();//关闭sta
con=null;

}
catch(SQLException ex){
System.out.println(ex.toString());
}
}
}
其他要使用数据库的类都是集成了这个类,集成这个类的方法进行数据库操作,但是第一次连接数据库没有问题,可以运行,但是多连接几次就出问题了。出现了java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Software caused connection abort: socket write error
java.lang.NullPointerException 两个异常。我的头都给搞到了,找不到解决的方法,烦请各位高手指点迷津万分感谢。

解决方案 »

  1.   

    我昨天也遇到此情况,因为是菜鸟也不好怎么说,我换了种链接方式就成功了,估计跟楼主差不多 Connection conn;
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    conn=DriverManager.getConnection("jdbc:odbc:Driver={SQL Server};Server=127.0.0.1;uid=sa;pwd=123456;Database=TestJsp");你在cmd下面打telnet localhost 1433 估计也会链接不上,我也一样,我打了SP4的补丁,可查询分析器还是能连接,不知道是否跟楼主一样
      

  2.   

    public   void   close(){ 
    try{ con.close();//关闭con 
    sta.close();//关闭sta 
    con=null; } 
    catch(SQLException   ex){ 
    System.out.println(ex.toString()); 

    是否在程序中有所体现
      

  3.   

    free160 同志是用jdbc-odbc桥连接数接库,好像速度会慢很多哦。所以一直没用这种方式连接。
    SYAND2004 同志所问,是否在程序中有所体现。我都没有调用过这个close()方法哦,其他类只是继承了数据库连接类进行数据库操作,没有调用这个方法关闭数据连接。
      

  4.   

    我想知道你是链接时出现的问题还是
    执行SQL语句时出现的问题没跟一下吗在Debug下
      

  5.   

    应该是执行sql语句的时候出现异常吧。
      

  6.   

    LOG信息是什么能让我看看看吗
    我刚才做一个跟你差不多的例子
    没有出现你的错误
      

  7.   

    你连接七八就可能出现错误了,我是用eclipse3.2的,你是用什么的呢?
      

  8.   

    ava.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Software caused connection abort: socket write error
      

  9.   

    那你的英文一定不错吧,,我也想还平台了,刚刚下载了myeclipse6.0,都是英文的还们看呢。^_^
      

  10.   

    jdbc对sql server一直支持的不好,打下补丁吧
    最好用oracle吧
      

  11.   

     sta=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); 
      rs=sta.executeQuery(sql);//执行查询sql语句,返回一个结果集对象 
      

  12.   

    偶一直是用jtds,没用过那三个包哦~呵呵~
      

  13.   

    我也出现这个问题,是getConnection的时候出错的
    关注