请大家帮忙解答,俺用JAVA程序直接连接.
sql2000打了SP4补丁,并且查看端口,发现1433端口已经开启监听.所有防火墙关了.
用SQL企业管理器和查询分析器都可以正常连接.SQL添加了命名管道和TCP协议.连接时显示的错误异常:类实例化成功!
com.microsoft.sqlserver.jdbc.SQLServerException: 到主机  的 TCP/IP 连接失败。 ja
va.net.ConnectException: Connection refused: connect
        at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(U
nknown Source)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Sour
ce)
        at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source)
        at java.sql.DriverManager.getConnection(DriverManager.java:525)
        at java.sql.DriverManager.getConnection(DriverManager.java:171)
        at Test.main(Test.java:16)连接使用的JAVA代码:
import java.sql.*;
class Test
{
       public static void main(String args[])
       {
            String url="jdbc:sqlserver://localhost:1433;DatabaseName=pubs";
            String user="sa";
            String password="yinguochao";
            String sqlStr="select * from jobs";            try
            {
                 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                 System.out.println("类实例化成功!");                 Connection con=DriverManager.getConnection(url,user,password);
                 System.out.println("创建连接对象成功!");                 Statement st=con.createStatement();
                 System.out.println("创建Statement成功!");                 ResultSet rs=st.executeQuery(sqlStr);
                 System.out.println("操作数据库成功!");
                 System.out.println("`````````````````````````````````````````````````");                 while(rs.next())
                 {
                      System.out.print(rs.getString("job_id")+" ");
                      System.out.print(rs.getString("job_desc")+" ");
                      System.out.print(rs.getString("min_lvl")+" ");
                      System.out.print(rs.getString("max_lvl"));
                      System.out.println();
                 }
                 rs.close();
                 st.close();
                 con.close();
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
       }
}
请大家帮忙分析一下原因.

解决方案 »

  1.   

    补充:
         俺们已经在SQL属性中选了混合登陆模式.
      

  2.   


    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";再确认:
    msbase.jar
    mssqlserver.jar
    msutil.jar
    上面三个类放在工程下,或classpath里面。
      

  3.   

    是的,   sqljdbc_1.0.809.102_chs.exe,  Microsoft SQL Server 2005 JDBC 
    SQL是SQL server 2000
      

  4.   

    是不是不兼容?
      难道Microsoft SQL Server 2005 JDBC 只支持  SQL2005 吗?   我觉得应该也兼容sql 2000 吧?
      

  5.   

    我用的JDBC是很新的,没有msbase.jar mssqlserver.jar msutil.jar
    有的是否 sqljdbc.jar
    我已经把它放到Tamoca5 的lib下面,并加入了classPath.
      

  6.   

    新的JDBC应该向后兼容吧?
    那我去找个旧的试试看
      

  7.   

    不是JDBC的问题吧?
    我在微软下载页看到:
    Microsoft 一直致力于改进互操作性,最近发布了新的使用 SQL Server 2005 的 Java Database Connectivity (JDBC) 驱动程序。SQL Server 2005 JDBC Driver 下载免费提供给所有 SQL Server 用户,它提供从任何 Java 应用程序、应用程序服务器或支持 Java 的小程序中访问 SQL Server 2000 和 SQL Server 2005 的能力
      

  8.   

    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
    上面的话你改了吗?
      

  9.   

    改的话也不行,2005版的JDBC是没有"microsoft"的.
    2000版的才要加;
      

  10.   

    我想确定一下,我的SQL实例名称是中文的,也就是SQL服务器是中文命名的,会不会是这个原因?我不知道怎么把它改为字母,谁可以告诉我?
      

  11.   

    谁可以帮我呀,真的没有办法解决吗?
    SQL服务器能取中文名吗?我取的是中文的,可以改吗?
    还有,我用来连接SQL2000的JAVA程序没有放到Tomcat 6.0的目录下,需要放到哪去吗?
    我直接放在F盘根目录下运行了````
      

  12.   

    从Stack Trace输出结果来看,LZ的驱动放置应该没有问题!
    com.microsoft.sqlserver.jdbc.SQLServerException: 到主机  的 TCP/IP 连接失败。 ja
    va.net.ConnectException: Connection refused: connect
            at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(U
    nknown Source)
            at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Sour
    ce)
            at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source)
            at java.sql.DriverManager.getConnection(DriverManager.java:525)
            at java.sql.DriverManager.getConnection(DriverManager.java:171)
            at Test.main(Test.java:16)关键是这句:Connection refused: connect……
    具体问题我也不知道……-_-!!
      

  13.   

    啊,晕!!!
    驱动名字不是不错了呢!!???我用的JDBC Driver for 2000的,是:
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");LZ的是:
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
      

  14.   

    都说了请看我的异常来研究了````
    我的驱动已经加载成功,我写的没错.我可是严格按照JDBC的驱动说明来编的.
    也就是说到底应该怎么设置SQL的TCP/TP协议或者哪里的TCP/IP呢?
    据说要改注册表,可是我不知道怎么改````
      

  15.   

    我用的是2005版的JDBC+sql2000
    你用的是2000版的JDBC+sql
    设置也有点不同的
      

  16.   

    大家还是告诉我,是不是用JAVA编程序连接数据库前,要先添加什么数据源?
    我用来连接的JAVA程序是随意放一个目录的,没问题吧?
    要怎么添加数据源呢?
      

  17.   

    没有问题的啊。。数据源和jdbc 是两种不同的连接方式。你上面的问题一般是你的sql驱动包和sql数据库不匹配造成的,建议下最新的jdbc驱动包
      

  18.   

    驱动是最新的呀```SQL2000+ 2005版的JDBC了
      

  19.   

    要不试试 sun 提供的驱动Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      

  20.   

    SQL Server 至少需要SP3
    查一下版本吧。