初学JSP,遇到连接sql数据问题,请各位大哥帮帮忙,小弟先谢谢了!

xxx2com 2007-10-07 01:12:45
小弟是学JSP的新手,现在遇到一个JSP连接SQL Server 2000的问题。请各位大哥帮帮忙!

Windows的操作系统,Tomcat、JDK和jdbc驱动安装路径如下:
D:\j2sdk
D:\Tomcat 5.0
C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC

设置虚拟路径为D:\jsp 配置好环境变量后,测试一个JSP页面

http://localhost:8080/jsp/firstjsp.jsp (没有连接数据的JSP页面)

测试成功!


按照资料上的方法

将C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC中的lib目录下三个jar文件:
msbase.jar,mssqlserver.jar,msutil.jar
拷贝到Tomcat 5.0目录下common\lib目录下,

之后,修改环境变量中的CLASSPATH,
把SQL Server 2000 For JDBC 驱动程序安装目录下的
C:\Program Files\SQLDriverForJDBC\lib\msbase.jar;
C:\Program Files\SQLDriverForJDBC\lib\mssqlserver.jar;
C:\Program Files\SQLDriverForJDBC\lib\msutil.jar;
追加到CLASSPATH中去


要连接的SQL Server 2000中数据库是testDatabase,数据库中的表是userTable

连接数据库的JSP页面如下:

---------------------selectuserTable.jsp---------------------------

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>

<HTML>

<BODY>
<% Connection con;
Statement sql;
ResultSet rs;

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=testDatabase","sa","12345");
sql=con.createStatement();
rs=sql.executeQuery("select * from userTable");

out.print("<Table Border>");
out.print("<TR><td colspan=8 align=center>用户数据</td></tr>");
out.print("<TR>");
out.print("<Td width=100 >"+"用户ID号");
out.print("<Td width=50 >"+"用户名");
out.print("<Td width=100>"+"用户真实姓名");
out.print("<Td width=50>"+"年龄");
out.print("<Td width=50>"+"性别");
out.print("<Td width=100>"+"联系地址");
out.print("<Td width=100>"+"联系电话");
out.print("<Td width=100>"+"添加时间");
out.print("</TR>");

while(rs.next())
{ out.print("<TR>");
out.print("<TD >"+rs.getLong(1)+"</TD>");
out.print("<TD >"+rs.getString(2)+"</TD>");
out.print("<TD >"+rs.getString(4)+"</TD>");
out.print("<TD >"+rs.getInt("user_age")+"</TD>");
out.print("<TD >"+rs.getString("user_sex")+"</TD>");
out.print("<TD >"+rs.getString("user_address")+"</TD>");
out.print("<TD >"+rs.getString("user_telephone")+"</TD>");
out.print("<TD >"+rs.getString("add_time")+"</TD>");
out.print("</TR>") ;
}
out.print("</Table>");
con.close();
%>
</BODY>
</HTML>

-----------------------------------------------------------------

在地址栏中输入:

http://localhost:8080/jsp/selectuserTable.jsp


出错页面显示为:

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:846)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.selectuserTable_jsp._jspService(selectuserTable_jsp.java:98)
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)


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.selectuserTable_jsp._jspService(selectuserTable_jsp.java:56)
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)


note The full stack trace of the root cause is available in the Apache Tomcat/5.0.30 logs.


请各位大哥帮帮小弟,先谢谢了!
...全文
178 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxx2com 2007-10-17
  • 打赏
  • 举报
回复
谢谢各位大哥的帮忙,到今天我终于把数据库连接上了。(AWUSOFT 在QQ上指导下完成)
非常感谢大家的厚爱! 特别是 AWUSOFT 和 Andy_Fay 两位大哥!

我现在是在单位做 网络维护 网站设计 和平面设计 事情比较杂,比较多。

当然不能跟楼上的各位大哥比了!

不管怎么样,受到各位大哥的照顾
小弟感恩不尽!
真想给每一个回帖的人给分,可惜小弟的分数不够!只能给我帮忙最多的两位大哥了!


----------------------------(结帖)-----------------------------
xxx2com 2007-10-08
  • 打赏
  • 举报
回复
非常感谢 Ghost_520 回了我的帖子!

不过我打了 SQLServer sp4 的补丁,还是出现一样的错误。

我想,会不会是 我其他什么地方没弄好。

我再找找原因看, 在问题弄好之前我会经常关注这个帖子的。

谢谢各位大哥哥给我的意见, 请各位大哥继续帮帮我啊! 非常非常感谢!



Ghost_520 2007-10-07
  • 打赏
  • 举报
回复
如果你的JSP 代码写的没有问题的话,我怀疑上你的SQLSever 有问题 ,你到网上下载一个 SQLServer 的sp3 和 sp4 升级包,并安装,再看下出现了此类异常没!!!
因为网上出现这种异常,用这种方法解决满好的!
xxx2com 2007-10-07
  • 打赏
  • 举报
回复
不好意思刚才我弄错了!

我把它改成了:

<%!
Connection con;
Statement sql;
ResultSet rs;
% >

<%
......

出错的页面是:

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:846)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.selectuserTable_jsp._jspService(selectuserTable_jsp.java:102)
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)


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.selectuserTable_jsp._jspService(selectuserTable_jsp.java:60)
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)


note The full stack trace of the root cause is available in the Apache Tomcat/5.0.30 logs.

请问我还需要改什么地方吗? 先谢谢了!
xxx2com 2007-10-07
  • 打赏
  • 举报
回复
谢谢 非常感谢!

我把它改成了:

<%!
Connection con;
Statement sql;
ResultSet rs;
%>

<%
......


出错的页面是:

HTTP Status 404 - /selectUserTable.jsp

--------------------------------------------------------------------------------

type Status report

message /selectUserTable.jsp

description The requested resource (/selectUserTable.jsp) is not available.


--------------------------------------------------------------------------------


请问我还需要改什么地方吗? 先谢谢了!
dengdai520 2007-10-07
  • 打赏
  • 举报
回复
把你的环境说下
chjiangsh 2007-10-07
  • 打赏
  • 举报
回复
应该这样的吧,<%! Connection con;
Statement sql;
ResultSet rs; %>,然后就是<% Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=testDatabase","sa","12345");
sql=con.createStatement();
rs=sql.executeQuery("select * from userTable");

out.print(" <Table Border >");
out.print(" <TR > <td colspan=8 align=center >用户数据 </td > </tr >");
out.print(" <TR >");
out.print(" <Td width=100 >"+"用户ID号");
out.print(" <Td width=50 >"+"用户名");
out.print(" <Td width=100 >"+"用户真实姓名");
out.print(" <Td width=50 >"+"年龄");
out.print(" <Td width=50 >"+"性别");
out.print(" <Td width=100 >"+"联系地址");
out.print(" <Td width=100 >"+"联系电话");
out.print(" <Td width=100 >"+"添加时间");
out.print(" </TR >");

while(rs.next())
{ out.print(" <TR >");
out.print(" <TD >"+rs.getLong(1)+" </TD >");
out.print(" <TD >"+rs.getString(2)+" </TD >");
out.print(" <TD >"+rs.getString(4)+" </TD >");
out.print(" <TD >"+rs.getInt("user_age")+" </TD >");
out.print(" <TD >"+rs.getString("user_sex")+" </TD >");
out.print(" <TD >"+rs.getString("user_address")+" </TD >");
out.print(" <TD >"+rs.getString("user_telephone")+" </TD >");
out.print(" <TD >"+rs.getString("add_time")+" </TD >");
out.print(" </TR >") ;
}
out.print(" </Table >");
con.close();
%>
你试一下看看!
xxx2com 2007-10-07
  • 打赏
  • 举报
回复
谢谢 谢谢 太感谢了!

接下来:

我把
<%
改为了
<%!

然后出现的出错页面信息是:

HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 7 in the jsp file: /selectuserTable.jsp
Generated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\jsp\org\apache\jsp\selectuserTable_jsp.java:15: 需要 <标识符>
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
^


An error occurred at line: 7 in the jsp file: /selectuserTable.jsp
Generated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\jsp\org\apache\jsp\selectuserTable_jsp.java:17: 需要 <标识符>


An error occurred at line: 7 in the jsp file: /selectuserTable.jsp
Generated servlet error:
con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=testDatabase","sa","02101");
^


An error occurred at line: 7 in the jsp file: /selectuserTable.jsp
Generated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\jsp\org\apache\jsp\selectuserTable_jsp.java:18: 需要 <标识符>
sql=con.createStatement();
^


An error occurred at line: 7 in the jsp file: /selectuserTable.jsp
Generated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\jsp\org\apache\jsp\selectuserTable_jsp.java:19: 需要 <标识符>
rs=sql.executeQuery("select * from userTable");
^


An error occurred at line: 7 in the jsp file: /selectuserTable.jsp
Generated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\jsp\org\apache\jsp\selectuserTable_jsp.java:21: 需要 <标识符>
out.print("<Table Border>");
^


An error occurred at line: 7 in the jsp file: /selectuserTable.jsp
Generated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\jsp\org\apache\jsp\selectuserTable_jsp.java:22: 需要 <标识符>
out.print("<TR><td colspan=8 align=center>鐢ㄦ埛鏁版嵁</td></tr>");
^


An error occurred at line: 7 in the jsp file: /selectuserTable.jsp
Generated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\jsp\org\apache\jsp\selectuserTable_jsp.java:23: 需要 <标识符>
out.print("<TR>");
^


An error occurred at line: 7 in the jsp file: /selectuserTable.jsp
Generated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\jsp\org\apache\jsp\selectuserTable_jsp.java:24: 需要 <标识符>
out.print("<Td width=100 >"+"鐢ㄦ埛ID鍙?");
^


An error occurred at line: 7 in the jsp file: /selectuserTable.jsp
Generated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\jsp\org\apache\jsp\selectuserTable_jsp.java:25: 需要 <标识符>
out.print("<Td width=50 >"+"鐢ㄦ埛鍚?");
^


An error occurred at line: 7 in the jsp file: /selectuserTable.jsp
Generated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\jsp\org\apache\jsp\selectuserTable_jsp.java:26: 需要 <标识符>
out.print("<Td width=100>"+"鐢ㄦ埛鐪熷疄濮撳悕");
^


An error occurred at line: 7 in the jsp file: /selectuserTable.jsp
Generated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\jsp\org\apache\jsp\selectuserTable_jsp.java:27: 需要 <标识符>
out.print("<Td width=50>"+"骞撮緞");
^


An error occurred at line: 7 in the jsp file: /selectuserTable.jsp
Generated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\jsp\org\apache\jsp\selectuserTable_jsp.java:28: 需要 <标识符>
out.print("<Td width=50>"+"鎬у埆");
^


An error occurred at line: 7 in the jsp file: /selectuserTable.jsp
Generated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\jsp\org\apache\jsp\selectuserTable_jsp.java:29: 需要 <标识符>
out.print("<Td width=100>"+"鑱旂郴鍦板潃");
^


An error occurred at line: 7 in the jsp file: /selectuserTable.jsp
Generated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\jsp\org\apache\jsp\selectuserTable_jsp.java:30: 需要 <标识符>
out.print("<Td width=100>"+"鑱旂郴鐢佃瘽");
^


An error occurred at line: 7 in the jsp file: /selectuserTable.jsp
Generated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\jsp\org\apache\jsp\selectuserTable_jsp.java:31: 需要 <标识符>
out.print("<Td width=100>"+"娣诲姞鏃堕棿");
^


An error occurred at line: 7 in the jsp file: /selectuserTable.jsp
Generated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\jsp\org\apache\jsp\selectuserTable_jsp.java:32: 需要 <标识符>
out.print("</TR>");
^


An error occurred at line: 7 in the jsp file: /selectuserTable.jsp
Generated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\jsp\org\apache\jsp\selectuserTable_jsp.java:34: 非法的类型开始
while(rs.next())
^


An error occurred at line: 7 in the jsp file: /selectuserTable.jsp
Generated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\jsp\org\apache\jsp\selectuserTable_jsp.java:46: 需要 <标识符>
out.print("</Table>");
^


An error occurred at line: 7 in the jsp file: /selectuserTable.jsp
Generated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\jsp\org\apache\jsp\selectuserTable_jsp.java:47: 需要 <标识符>
con.close();
^
19 错误



org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:332)
org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:437)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:497)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:476)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:464)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
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)


note The full stack trace of the root cause is available in the Apache Tomcat/5.0.30 logs.


然后我又傻了! 是我改错了是吗? 请你再帮帮我好吗?
jiangguanghe185 2007-10-07
  • 打赏
  • 举报
回复
Connection con;
Statement sql;
ResultSet rs;
你的这三个变量都没有初始化,所以它就报异常了
你可以把他放到<%! %>中就可以这样写,但是你写在<% %>中就必须给它赋值
ZhangRuuui 2007-10-07
  • 打赏
  • 举报
回复
用Try捕获一下?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧