1、我的操作系统是win2003,jdk1.5+tomcat5.05+eclipse3.1+myeclipse
2、系统打了SP3补丁
3、我把JDBC放在了项目WEB-INF的lib下了,三个.jar包
4、我的JSP代码:
<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.sql.*"%> <html> <body> <%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"; //pubs为你的数据库的 String user="sa"; String password="sa"; 
Connection conn= DriverManager.getConnection(url,user,password); Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); String sql="select * from jobs"; ResultSet rs=stmt.executeQuery(sql); while(rs.next()) {%><P>  您的第一个字段内容为:<%=rs.getString(1)%>  </P><P>您的第二个字段内容为:<%=rs.getString(2)%> </P><%}%> <%out.print("数据库操作成功,恭喜你");%> <%rs.close(); stmt.close(); conn.close(); 
%> </body> </html>
5、错误信息:
HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.access$1100(PageContextImpl.java:64)
org.apache.jasper.runtime.PageContextImpl$12.run(PageContextImpl.java:745)
java.security.AccessController.doPrivileged(Native Method)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:743)
org.apache.jsp.sqlserver_jsp._jspService(sqlserver_jsp.java:103)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
sun.reflect.GeneratedMethodAccessor38.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:239)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:268)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:157)
root cause java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)
com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
java.sql.DriverManager.getConnection(DriverManager.java:525)
java.sql.DriverManager.getConnection(DriverManager.java:171)
org.apache.jsp.sqlserver_jsp._jspService(sqlserver_jsp.java:61)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
sun.reflect.GeneratedMethodAccessor38.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:239)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:268)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:157)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
--------------------------------------------------------------------------------Apache Tomcat/5.0.28

解决方案 »

  1.   

    先问一下楼主,你SQL server2000打了补丁没有?
      

  2.   

    不是布丁不是SP3以上,就是JDBC的包弄错了。估计前者的可能性更大。
    建议楼主直接打SP4的包,一了白了。
      

  3.   

    root cause java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
      

  4.   

    同意nccxl(小猪的狗熊)的做法,lz试下吧!
      

  5.   

    你是不是只把JDBC的包拷到工程目录下,而没有加到工程里呀?
      

  6.   

    右击工程名->属性->java build path->libraries->add external jar
      

  7.   

    你是不是只解包了,没安装?
    你可以这样试验一下
    在 开始->运行 里输入
    telnet 127.0.0.1 1433
    如果能看见一个停留的黑色界面,并且标题栏显示Telnet 127.0.0.1
    那么说明你机器的1433端口已经打开了,如果不能,你就检查你补丁包的安装问题,如果能的话,那么检查你工程目录lib下是否放好了3个驱动.jar,如果放好了驱动还是不行,检查你的程序吧
      

  8.   

    再补充刚才我的回答,你在运行里输入telnet 127.0.0.1 1433前,一定要先把你的sqlserver服务启动了
      

  9.   

    你把Sql server 的Sp2打上就可以了.
      

  10.   

    Error establishing socket.就是这个错误,打不开端口1433,这是因为SQL Server2000没有打补丁造成的.打上sp3就可以了.
      

  11.   

    这里能贴图?不会
    我说的很详细了,你是1433端口没打开的,你下载以后的补丁是压缩的,你看起来象安装了,实际是解压,你要到你解压路径那里选择setup.bat这次你才能看到安装补丁的界面,和你安装sqlserver2000的界面一样的
      

  12.   

    1首先看驱动的三个.jar包  
          2放在TOMCAT的common/lib下  然后在放在jdk的lib下!!(最好把3个.JAR的文件路径放在CLAAPATH下)
       3打开数据库  在SP3或者SP4应该打了的情况下  
       4在MS-DOS下使用netstat -an 查看端口1433打开没!!
      

  13.   

    你的SQL Server 有没有打上SP4,并且安装JDBC驱动(这是个小程序,你可以到微软上下载),安装完成后为三个JAR文件设置那个 classpath环境变量,再把这三个文件复制到你的应用目录下,或者你不放心的话将Tomcat ,jdk目录也复制一份,
    [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
    我以前也遇到这个问题,不过把SQL Server打上sp4,再设置变量,复制三个文件后就没有了,最好用直接把你的JSP文件复制到你的TOMCAT的应用目录下,用TOMCAT来编译执行比较好,因为那些IDE的开发软件可能还要设置,例如JBuilder,还要将jar文件导入
      

  14.   

    sqljdbc.dll这个文件应放在哪边啊.????
      

  15.   

    SQL Server 有没有打上SP4
    请问要下哪个补丁呢.下载页面有四个,
    我的系统是xp系统不知要下哪个,
      

  16.   

    建议你最好下一个JDBC-SQL2000的安装包(用安装的),install后将三个jar文件复制到你的tomcat的lib中,再复制到web-inf/lib/中
      

  17.   

    SQL Server 2000的SP4 补丁没打好,
    你肯定只是解压缩了,没有安装。
    注意,那个SP4 的补丁,第一次安装是解压缩,你要到解压缩后的那个文件夹中去运行安装文件。
      

  18.   

    如运行程序时出现 "Error establishing socket" 错误,则应进行如下调试:
    1 检查SQL SERVER 是否允许远程访问.具体步骤:1)打开"企业管理器",打开控制台根目录>SQL Server 组>数据库
    2)在相应"数据库"上单击右键,选择"属性"
    3)选择"连接"选项卡,检查"远程服务器连接"下,RPC服务是否选择.2 使用telnet IP地址 1433,系统是否提示连接出错,如系统提示出错
    检查是否防火墙屏蔽了SQL SERVER 或 java IDE 的网络访问端口
    如果是,关闭防火墙,重新启动SQL SERVER和java IDE,进行测试,
    如果系统仍提示上述错误,尝试下列步骤3 检查SQL SERVER 端口号及是否启用了TCP/IP协议,具体步骤:1)打开"企业管理器",打开控制台根目录>SQL Server 组>数据库
    2)在相应"数据库"上单击右键,选择"属性"
    3)选择"常规"选项卡,点击"网络配置",如启用的协议中无"TCP/IP协议"将其加入
    4)选择"TCP/IP协议",点击"属性",检查其端口号是否为1433
    5)如端口号为1433将其修改为其它端口号,修改jdbc连接语句,将端口号同样改为新启用的端口号,如jdbc:microsoft:sqlserver://server_name:1400(假设新端口号为 1400)
     
    以下的方法你每种的去试试:
    #检查一下sql server的connection有没有full.#如果是认证的问题.
    可到sql enterprice manager->指定server->内容->安全性.
    把验证改为 SQL server 及 windows.#点选属性检查一下port是否正确.#执行%MSSQL_HOME%\80\Tools\Binn\SVRNETCN.exe
    把TCP/IP启用.#关掉防火墙.#把SQL server update到sp3:
    http://www.microsoft.com/sql/downloads/2000/sp3.asp经我验证,一般升级到sp3就好用了!