JSP连接sqlserver2000数据库的问题!高手请进!~~顶者有分!~~~

ls212 2006-11-22 04:36:08
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 report

message

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
...全文
731 点赞 收藏 35
写回复
35 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wanzyqyy 2007-02-13
路过,帮顶!
回复
如运行程序时出现 "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就好用了!
回复
ruanjiantaotao 2007-02-12
一般先装企业版或开发版,然后打上sp4补丁即可
回复
ls212 2006-12-03
晕.我安装了,解压缩到C盘根目录,,然后再安装!
回复
song1650 2006-11-30
晕 想看看就搞定了,呵呵学习到了
回复
vannel 2006-11-30
SQL Server 2000的SP4 补丁没打好,
你肯定只是解压缩了,没有安装。
注意,那个SP4 的补丁,第一次安装是解压缩,你要到解压缩后的那个文件夹中去运行安装文件。
回复
flyIce945 2006-11-30
看上去和我当时的问题一样,
后来我就改用桥连接了...
回复
fisherofsmea 2006-11-26
帮顶,学习学习
jf
回复
zqswork 2006-11-26
1首先看驱动的三个.jar包  
2放在TOMCAT的common/lib下  然后在放在jdk的lib下!!(最好把3个.JAR的文件路径放在CLAAPATH下)
   3打开数据库  在SP3或者SP4应该打了的情况下  
   4在MS-DOS下使用netstat -an 查看端口1433打开没!!
回复
baobao28 2006-11-26
这里能贴图?不会
我说的很详细了,你是1433端口没打开的,你下载以后的补丁是压缩的,你看起来象安装了,实际是解压,你要到你解压路径那里选择setup.bat这次你才能看到安装补丁的界面,和你安装sqlserver2000的界面一样的
回复
ls212 2006-11-26
还是不行呀!
哪位好心人能写出详细的步骤(最好有图)和测试代码!
解决后我另开贴再给200分!
谢谢各位!
回复
jx321 2006-11-26
搞定了.谢谢各位,
回复
wjtlys 2006-11-26
建议你最好下一个JDBC-SQL2000的安装包(用安装的),install后将三个jar文件复制到你的tomcat的lib中,再复制到web-inf/lib/中
回复
jx321 2006-11-26
SQL Server 有没有打上SP4
请问要下哪个补丁呢.下载页面有四个,
我的系统是xp系统不知要下哪个,
回复
jx321 2006-11-26
sqljdbc.dll这个文件应放在哪边啊.????
回复
wjhalex 2006-11-26
你的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文件导入
回复
jx321 2006-11-26
好东西,我也碰到这个问题,烦死了.
回复
凉凉二点凉 2006-11-24
一般情况下都是补丁没有打,或者该导入的包没出导入!希望楼主能够成功!
回复
ljwwxl 2006-11-24
你把Sql server 的Sp2打上就可以了.
回复
guifuli 2006-11-24
Error establishing socket.就是这个错误,打不开端口1433,这是因为SQL Server2000没有打补丁造成的.打上sp3就可以了.
回复
加载更多回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2006-11-22 04:36
社区公告
暂无公告