产生如下异常
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket. 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.TDSConnection.<init>(Unknown Source) at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source) at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)获取数据库连接失败!!!getConnectionUrl() 内的错误跟踪: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket. 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:512) at java.sql.DriverManager.getConnection(DriverManager.java:171) at studentsystem.JDBCDriver.getConection(JDBCDriver.java:75) at studentsystem.JDBCDriver.chaxu(JDBCDriver.java:97) at studentsystem.JDBCDriver.main(JDBCDriver.java:126)java.lang.NullPointerException at studentsystem.JDBCDriver.chaxu(JDBCDriver.java:98) at studentsystem.JDBCDriver.main(JDBCDriver.java:126)Exception in thread "main" 是不是SQLserver 的版本问题? 我的是SP2的...
不过我现在正在下住SP4的补丁
还有JDBC纯JAVA驱动..我的也是最新的版本了

解决方案 »

  1.   

    出现[Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket,这个错误,不论在什么容器下,凡是出现这种错误的,都可以说不是程序本身的错误,因为大部分人都知道:
    jdbc:microsoft:sqlserver://localhost:1433;这样写是对的,但为什么这样写呢
    ######################################################################
    如何用jdbc连接到sqlserver2000(翻译英文原裆)(1)
    介绍了连接server2000的方法之一:使用DriverManager.getConnection(...)连接到数据库有两种方法,one is :with a connection url through the jdbc driver manager,another is with a jndi datasource.我们先说第一种:使用DriverManager.getConnection()方法
    第一:你需要设置classpath,它是你得jvm加载类时所要寻找的路径。
    当然首先你要有jdbs driver for sqlserver。
    设置环境变量:window os:set classpath=.;${your path to save the driver}/msbase.jar;${}/mssqlserver.jar;${}/msutil.jar
    第二:注册你的驱动registering the driver
    注册驱动告诉你得jdbc管理器去加载什么驱动程序类,
    当使用class.forName(),你必须指定驱动类名称,
    com.microsoft.jdbc.sqlserver.SQLServerDriver.例如:Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    第三:在注册完一个驱动类后,你必须把你的数据库的物理信息以一个url的形式传给管理器,下面是一个url模版:jdbc:microsoft:sqlserver://server_name:port,其中server2000默认的端口号为:1433.下面是一个例子:
    Connection con=DriverManager.getConnection("jdbc:microsoft:sqlserver://server_name:1433","userName","password");
    注:这里的server_name必须是一个ip address,或者一个主机名,你可以使用ping命令来测试你的主机名是否传回一个正确的ip address
    ###################################
    --解决:启动你的sqlserver2000的服务器网络实用工具后,确保你的Tcp/Ip协议已启动,默认的应该都启动了,这是进行通讯的条件一
    然后,在选中Tcp/Ip协议后点击属性,就看到了一个默认端口号,这就是你在 getConnection里用到的端口号,你必须把你程序里用
    到的端口号,写成这里的值,这样才能解决上面的问题,当然你也可以在这里把端口号给该了,而保持程序不变!1433