环境:JDK +TOMCAT +SQL 2008 想用ODBC联接。<!--jspodbc.jsp-->
<%@ page contentType="text/html;charset=gb2312" import="java.sql.*"%>
<html>
<head>
<title>访问SQL Server数据库</title>
</head>
<body>
<h2 align="center">访问 SQL Server 数据库</h2>
<hr><% 
    //下面程序段用于连接到数据库
   //加载类sun.jdbc.odbc.jdbcOdbcDriver,并通过newInstance()方法实例化
    Class.forName("sun.jdbc.odbc.jdbcOdbcDriver").newInstance();
    out.println("数据库驱动注册成功!<br>");
    //设置url为ODBC中的jspdb String url="jdbc:odbc:jspdb";
 String user="";
 String password="";
 //建立与数据库的连接,将连接赋值给conn
 Connection conn=DriverManager.getConnection(url,user,password);
 out.println("数据库连接成功!<br><hr>");
//通过Connection类的createStatement()方法创建 Statement实例,
//并赋值 stmt,以方便操作数据库
 Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                 ResultSet.CONCUR_UPDATABLE);
//创建SQL查询字符串,以选择数据表trade中的记录
 String sql="select *from trade";
//通过Statement类的executeQuery()方法创建ResultSet对象RS,方便对数据表的操作
  ResultSet rs=stmt.executeQuery(sql);
//移动到数据表的第一条记录
rs.first();
//下面的语句将显示记录中各字段的内容
%>
 
 id:<%=rs.getObject("id")%><br>
商品名称:<%=rs.getObject("tradename")%><br>
供应商:<%=rs.getObject("provider")%><br>
类别:<%=rs.getObject("class")%><br>
单价:<%=rs.getObject("price")%><br>
数据:<%=rs.getObject("num")%><br>
<hr>
数据库访问成功!<br>
<%
  rs.close();//关闭RS
  stmt.close(); //关闭stmt
  conn.close(); //关闭conn
%>
数据库已关闭!
</body>
</html>
可是为什么老出错呢?

解决方案 »

  1.   

    type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: java.lang.ClassCastException: org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.AnnotationProcessor
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:532)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:366)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    root cause java.lang.ClassCastException: org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.AnnotationProcessor
    org.apache.jasper.servlet.JspServletWrapper.destroy(JspServletWrapper.java:436)
    org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:139)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:320)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.10 logs.
      

  2.   

     我联接SQL的时候用的是windows 身份验证,用户名密码那里都是灰的不可选的,是不是就是用户名和密码都是空的?
      

  3.   

    windnow身份的话 貌似跟SQL用户的有点不同吧 我记不清了呢 你上网查下 最好还是建一个SQL身份
      

  4.   

    windows 身份验证 换成用户名和密码
       java.lang.ClassCastException: org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.AnnotationProcessor
     从异常看是转换异常 
       servlet-api.jar包和TOMCAT 自带的里面的包有冲突了吧
      

  5.   

    不要用odbc,你用odbc还得在本机先配置odbc,你搜一下,sqljdbc4.jar,用sqlserver自大的jdbc驱动,或者用更好用的,jtds来连sqlserver。
      

  6.   

    顶楼上,ODBC连数据库比JDBC要慢一些,而且JDBC还要简单一些
      

  7.   

    上边那个错误我找到原因了,
      是这句: Class.forName("sun.jdbc.odbc.jdbcOdbcDriver").newInstance();
     中jdbcOdbcDriver 中没有大写的原因。这个是最新的错误提示。忘记各位高手帮忙看看,谢谢!org.apache.jasper.JasperException: An exception occurred processing JSP page /jspodbc.jsp at line 2421:  String user="";
    22:  String password="";
    23:  //建立与数据库的连接,将连接赋值给conn
    24:  Connection conn=DriverManager.getConnection(url,user,password);
    25:  out.println("数据库连接成功!<br><hr>");
    26: //通过Connection类的createStatement()方法创建 Statement实例,
    27: //并赋值 stmt,以方便操作数据库
    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:515)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:408)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    root cause javax.servlet.ServletException: java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:855)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:784)
    org.apache.jsp.jspodbc_jsp._jspService(jspodbc_jsp.java:127)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    root cause java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
    sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
    sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
    sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
    sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
    sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
    java.sql.DriverManager.getConnection(Unknown Source)
    java.sql.DriverManager.getConnection(Unknown Source)
    org.apache.jsp.jspodbc_jsp._jspService(jspodbc_jsp.java:77)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)