我用下面代码始终连接不到数据库,老是出现这个错误        String user="sa";
        String pass="123";
        String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
        String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=master";
        Connection dbConn=null;
        Statement stmt = null;
        try{
             Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
          System.out.println("ok");
            dbConn = DriverManager.getConnection(dbURL,user,pass);
          System.out.println("Connection Successful!");         
        } catch (Exception e){
            e.printStackTrace();
        }com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSChannel.read(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.Prelogin(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.loginWithoutFailover(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)要不就是com.microsoft.sqlserver.jdbc.SQLServerException: Software caused connection abort: recv failed
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSChannel.read(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.Prelogin(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.loginWithoutFailover(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)这是什么原因啊?该怎么办啊

解决方案 »

  1.   

            String user="sa"; 
            String pass="123"; 
            //String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; 可以不用
            String dbURL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=master"; 

            Connection dbConn=null; 
            Statement stmt = null; 
            try{ 
                 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
              System.out.println("ok"); 
                dbConn = DriverManager.getConnection(dbURL,user,pass); 
              System.out.println("Connection Successful!");          
            } catch (Exception e){ 
                e.printStackTrace(); 
            } 
    红色部分是我帮你修改的部分,你试试看,行不行
      

  2.   


    楼上的不行啊,sql 2005好像不需要在url里加microsoft的。
    驱动是不是一个jar文件啊,我也加载了。
    我又搜了下,用telnet localhost 1433 不通,怎么回事
      

  3.   

    没打开连接吧,没调用Open方法
      

  4.   

    刚才服务器没启动,所以连不上,但我启动了还是会出现com.microsoft.sqlserver.jdbc.SQLServerException: Software caused connection abort: recv failed 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.TDSChannel.read(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.Prelogin(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.loginWithoutFailover(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at java.sql.DriverManager.getConnection(Unknown Source) 什么原因?是不是要打什么补丁啊?
      

  5.   

    那2005的驱动也是com.microsoft.sqlserver.jdbc.SQLServerDriver吗?
    2000的是com.microsoft.jdbc.sqlserver.SQLServerDriver
      

  6.   

    6楼的,2000和2005...应该说jdbc2000和jdbc2005/jdbc1.0/1.1/1.2是不一样的楼主,你在cmd里输入netstat看看当前系统有哪些端口打开了
    1433端口有没有打开...
    看看你设置的sqlserver的默认端口是哪个
      

  7.   

    我默认的端口是1433, 我直接输入netstat结果里没有1433啊
      

  8.   

    看来我落伍了.
    如果你没能打补丁的话,你就打上SP3或SP4补丁试试
      

  9.   

    http://maguangzhi.bokee.com/5825302.html
    你可以到这个网址看看,希望能帮到你
      

  10.   

    输入netstat没有1433的记录,那么可能就是此端口没有打开了...所以LZ你连接不上最好先用netstat -a再确定下,如果还没有就基本确定是这个问题了
    如果有但其 State不是LISTENING那就是SQLSERVER虽然打开了此端口,但没监听如果你启动了SQLSERVER,它有监听某个端口的话,用netstat -a命令看到的列表中应该能看到他,你看看你是不是搞错端口了
      

  11.   

    恩...bsbbt兄,2005目前最高只有SP1LZ,还是跟你确认下...你SQL SERVER真的打开了?  -_-!
    看recv failed
    应该是打开了,并且连接上了,做了一次握手,但返回信息失败?
      

  12.   

    netstat -a 没有1433端口,但是有其他的一些ms-sql-s 等,我在配置工具里的TCP端口就是1433啊,是不是动态端口也要设啊?
      

  13.   

    我数据库确实打开了,而且我用sql server management studio express也能连接上啊。但是我要是选择连接属性里面的网络协议为TCP/IP就连接不上了。
      

  14.   

    兄弟,这个问题困惑了我一周,今天被我刚刚解决,又正好看到你贴,
    2000驱动,打了sp4补丁,启动sql server configuration manager 协议下找 :启动tcp/ip
    提示要你停止并重起服务,记住要服务是重新启动,不要停止再起,这样启动不了,反正我是这样的问题\
    害我搞半天,这样应该可以连接上了
    2005驱动,我出错是没有恰当驱动
    解决: url中去掉micosoft,即jdbc:sqlserver://localhost:1433;
    其实2000驱动也可以这样写
    好了,现在只有oracle的错了,不知道要困惑我多久,
    这些希望对你有帮助
      

  15.   

    进SQL Server Configuration Manager
    看看SQL SERVER2005 网络配置  -MSSQLSERVER 的协议  中的TCP/IP协议启用了么