jdbc 连接sql server 2005问题

时间:2021-05-02 10:06:03
我用下面代码始终连接不到数据库,老是出现这个错误

        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)



这是什么原因啊?该怎么办啊

21 个解决方案

#1


看看驱动程序加载了没

#2


        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(); 
        } 
红色部分是我帮你修改的部分,你试试看,行不行

#3



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

#4


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

#5


刚才服务器没启动,所以连不上,但我启动了还是会出现

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) 

什么原因?是不是要打什么补丁啊?

#6


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

#7


6楼的,2000和2005...应该说jdbc2000和jdbc2005/jdbc1.0/1.1/1.2是不一样的

楼主,你在cmd里输入netstat看看当前系统有哪些端口打开了
1433端口有没有打开...
看看你设置的sqlserver的默认端口是哪个

#8


 看来我落伍了

#9




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

#10


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

#11


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

#12


输入netstat没有1433的记录,那么可能就是此端口没有打开了...所以LZ你连接不上

最好先用netstat -a再确定下,如果还没有就基本确定是这个问题了
如果有但其 State不是LISTENING那就是SQLSERVER虽然打开了此端口,但没监听

如果你启动了SQLSERVER,它有监听某个端口的话,用netstat -a命令看到的列表中应该能看到他,你看看你是不是搞错端口了

#13


恩...bsbbt兄,2005目前最高只有SP1

LZ,还是跟你确认下...你SQL SERVER真的打开了?  -_-!
看recv failed
应该是打开了,并且连接上了,做了一次握手,但返回信息失败?

#14


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

#15


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

#16


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

#17


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

#18


阿勋
签名

#19


重启一下电脑

#20


那应该怎么解决啊?

#21


该回复于2015-05-26 10:15:40被管理员删除

#1


看看驱动程序加载了没

#2


        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(); 
        } 
红色部分是我帮你修改的部分,你试试看,行不行

#3



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

#4


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

#5


刚才服务器没启动,所以连不上,但我启动了还是会出现

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) 

什么原因?是不是要打什么补丁啊?

#6


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

#7


6楼的,2000和2005...应该说jdbc2000和jdbc2005/jdbc1.0/1.1/1.2是不一样的

楼主,你在cmd里输入netstat看看当前系统有哪些端口打开了
1433端口有没有打开...
看看你设置的sqlserver的默认端口是哪个

#8


 看来我落伍了

#9




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

#10


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

#11


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

#12


输入netstat没有1433的记录,那么可能就是此端口没有打开了...所以LZ你连接不上

最好先用netstat -a再确定下,如果还没有就基本确定是这个问题了
如果有但其 State不是LISTENING那就是SQLSERVER虽然打开了此端口,但没监听

如果你启动了SQLSERVER,它有监听某个端口的话,用netstat -a命令看到的列表中应该能看到他,你看看你是不是搞错端口了

#13


恩...bsbbt兄,2005目前最高只有SP1

LZ,还是跟你确认下...你SQL SERVER真的打开了?  -_-!
看recv failed
应该是打开了,并且连接上了,做了一次握手,但返回信息失败?

#14


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

#15


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

#16


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

#17


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

#18


阿勋
签名

#19


重启一下电脑

#20


那应该怎么解决啊?

#21


该回复于2015-05-26 10:15:40被管理员删除