通过JDBC访问Sql Server 2008总提示Class.forName出错,请各位大侠解教。

碳酸盐 2014-07-30 05:14:09
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="gbk"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>通过JDBC驱动访问SQL Server 2008</title>
</head>
<body>
<center>
<h2>使用JDBC驱动访问SQL Server 2008数据库</h2>
<hr>
<table border="2" bgcolor="ccceee" align="center">
<tr>
<th>学生ID</th>
<th>学生姓名</th>
<th>成绩</th>
<th>班级</th>
</tr>
<%
//注册SQL Server 2008驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//SQL Server 2008的URL
String url="jdbc:sqlserver://localhost:1433;databasename=Student";
String user="sa";
String password="";
Connection conn=DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
String sql="select * from score where Sscore>100";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()){
%>
<tr>
<td><%=rs.getString("Sid") %></td>
<td><%=rs.getString("Sname") %></td>
<td><%=rs.getString("Sscore") %></td>
<td><%=rs.getString("Sclass") %></td>
</tr>
<%
}
conn.close();
stmt.close();
rs.close();
%>
</table>
</center>
</body>
</html>


tomcat错误提示是:
HTTP Status 500 - An exception occurred processing JSP page /6-6.jsp at line 23


type Exception report

message An exception occurred processing JSP page /6-6.jsp at line 23

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

exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /6-6.jsp at line 23

20: </tr>
21: <%
22: //注册SQL Server 2008驱动
23: Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
24: //SQL Server 2008的URL
25: String url="jdbc:sqlserver://localhost:1433;databasename=student";
26: String user="sa";


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:405)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:349)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause
javax.servlet.ServletException: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:905)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:834)
org.apache.jsp._6_002d6_jsp._jspService(_6_002d6_jsp.java:134)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:405)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:349)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1324)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1177)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:125)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:62)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Class.java:190)
org.apache.jsp._6_002d6_jsp._jspService(_6_002d6_jsp.java:85)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:405)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:349)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

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

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

Apache Tomcat/8.0.9

我反复对照教材,没有写错代码,为什么连接不到数据库,发愁。
...全文
365 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
碳酸盐 2014-07-31
  • 打赏
  • 举报
回复
终于连接成功了,解决办法实行了两步: 1. 把classpath的路径全部改成英文; 2. 设置混合验证模式启用(只有小白才能犯得的低级错误)。 下面就不是那么重要了,重启服务器,再用混合验证模式就能登陆了,eclipse也能连接上sql server了。 感谢以上各位的辛苦帮助,真的谢谢啦。
jevenabc 2014-07-30
  • 打赏
  • 举报
回复
引用 7 楼 lijinwen920523 的回复:
classfor.forName需要用try catch模块捕捉异常
捕捉ClassNotFoundException异常
jevenabc 2014-07-30
  • 打赏
  • 举报
回复
classfor.forName需要用try catch模块捕捉异常
qingyuan18 2014-07-30
  • 打赏
  • 举报
回复
不要把jar包放在中文路径下!
碳酸盐 2014-07-30
  • 打赏
  • 举报
回复
这是我的ClassPath设置: E:\JSP相关文件重新下载\mysql-connector-java-5.1.30\mysql-connector-java-5.1.30-bin.jar;C:\Program Files\Java\jdk1.7.0_60\lib;E:\JSP相关文件重新下载\SQL Server 2008安装文件及教程\JDBC Driver 4.0 for SQL Server\sqljdbc_4.0.2206.100_chs\sqljdbc_4.0\chs\sqljdbc4.jar;E:\JSP相关文件重新下载\SQL Server 2008 JDBC\sqljdbc_4.0.2206.100_chs\sqljdbc_4.0\chs\sqljdbc.jar 不知道还缺哪个jar?
The_end90 2014-07-30
  • 打赏
  • 举报
回复
导入sqlserver.jar包
whos2002110 2014-07-30
  • 打赏
  • 举报
回复
你这个类com.microsoft.sqlserver.jdbc.SQLServerDriver所在的包没有放在项目的classpath下吧
shixitong 2014-07-30
  • 打赏
  • 举报
回复
sqlserver驱动包加了吧?
tony4geek 2014-07-30
  • 打赏
  • 举报
回复
你是少 jar 了。核对看看。

81,091

社区成员

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

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