我网上下了很多jsp有连接数据库的网页,但是老是在连接数据库那段代码出错,我到asp300去下了jsp留言板实例,只要有连接数据库的都出错,我用的是Tomcat5.5的,开发软件用MyEclipse 5.5.1 GA,因为没有项目文件,所以 我把下下来的放在Apache Software Foundation\Tomcat 5.5\webapps目录下,然后用浏览器访问,只要有连接数据库的都会报错,没有连接数据库的不会报错,具体报错内容:
exception org.apache.jasper.JasperException: Exception in JSP: /conn.jsp:96: //加载驱动程序
7: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
8: //建立连接
9: Connection conn= DriverManager.getConnection(url); 
10: // **** 数据库连接代码 结束 *********
11: %>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:355)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
因为附件不能上传压缩包,所以给地址,不是做广告,别误会:
源代码下载地址:http://www.asp300.com/View/13/12125.html

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【tiger222000】截止到2008-06-30 11:43:15的历史汇总数据(不包括此帖):
    发帖数:1                  发帖分:20                 
    结贴数:0                  结贴分:0                  
    未结数:1                  未结分:20                 
    结贴率:0.00  %            结分率:0.00  %            
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    前几天断电,没上网看,对不起上面回答的,
    下面是对上面所有的回答:
    我有启动sql server服务,和Monitor Tomcat
    下面是所有的异常:
    type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Exception in JSP: /conn.jsp:96: //加载驱动程序
    7: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    8: //建立连接
    9: Connection conn= DriverManager.getConnection(url); 
    10: // **** 数据库连接代码 结束 *********
    11: %>
    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:355)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    root cause javax.servlet.ServletException: [Microsoft][ODBC Microsoft Access Driver] '(未知的)'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:841)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:774)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:345)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    root cause java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] '(未知的)'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。
    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.index_jsp._jspService(index_jsp.java:78)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    note The full stack trace of the root cause is available in the Apache Tomcat/5.5.25 logs.连接数据库的是由conn.jsp提供的,至于四楼的说还要弄数据源这个我就有点不明白了,不是只要像asp一样写个数据库连接的就行了,还要用到数据源吗?
    还有谢谢各位了帮忙解答下,本人感激不尽啊
      

  3.   

    前几天断电,没上网看,对不起上面回答的,
    下面是对上面所有的回答:
    我有启动sql server服务,和Monitor Tomcat
    下面是所有的异常:
    type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Exception in JSP: /conn.jsp:96: //加载驱动程序
    7: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    8: //建立连接
    9: Connection conn= DriverManager.getConnection(url); 
    10: // **** 数据库连接代码 结束 *********
    11: %>
    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:355)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    root cause javax.servlet.ServletException: [Microsoft][ODBC Microsoft Access Driver] '(未知的)'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:841)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:774)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:345)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    root cause java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] '(未知的)'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。
    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.index_jsp._jspService(index_jsp.java:78)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    note The full stack trace of the root cause is available in the Apache Tomcat/5.5.25 logs.连接数据库的是由conn.jsp提供的,至于四楼的说还要弄数据源这个我就有点不明白了,不是只要像asp一样写个数据库连接的就行了,还要用到数据源吗?
    还有谢谢各位了帮忙解答下,本人感激不尽啊
      

  4.   

    你连的什么数据库啊!驱动用的对吗?
    用jdbc桥连接,是不是要配置数据源啊!!!
      

  5.   

    回答八楼的问题:
    我用的数据库是access,以下是是数据库连接代码,也就是那个conn.jsp的代码:<%@page import="java.sql.*"%>
    <%String spath="data\data1.mdb";   //注意由网站根到文件的路径
    String dbpath = application.getRealPath(spath); //转化成物理路径
    //数据库连接字符串 
    String url ="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+dbpath; 
    //加载驱动程序
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    //建立连接
    Connection conn= DriverManager.getConnection(url); 
    // **** 数据库连接代码 结束 *********
    %>你所说的驱动是不是Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    关于数据源的配置问题,我还是有个疑问,jsp就不是像asp一样吗,给一个数据库连接的就可以了,还要配置数据源吗?
      

  6.   

    什么年代了~~ACCESS,玩下别的数据库吧,你以后用不上ACCESS的,除非你TEACHER
      

  7.   

    回答10楼的:
    我一般的不用access数据库的,我一般都用sql server做数据库的,我之所以用access做数据库,是因为我只是想测试下数据库连接而已,因为我用jsp去连接sql,发现连接不了,所以下了个实例是用access去做连接,发现也连接不了,所以来问下为什么会出错,
      

  8.   

    Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“) ;
    String url=“jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=“+application.getRealPath(“/Data/ReportDemo.mdb“);
    Connection conn = DriverManager.getConnection(url,““,“”);
    Statement stmtNew=conn.createStatement() ;
    access当然需要配置数据源了,你的String url明明写着是jdbc:odbc桥连接阿
      

  9.   

    数据库地址的问题是地址不正确,你可以直接将dbpath的内容换成绝对地址试试注意斜杠必须是双斜杠如:c:\\test.mdb
      

  10.   

    <%String spath="data\data1.mdb";  //注意由网站根到文件的路径 
    这个路径找不到这个数据库。。
      

  11.   

    回答13楼的,14楼的:
    我把dbpath改成绝对路径依然出现同样的错误,还有,我的主目录名book,jsp文件是放在主目录名下的,而数据库是放在主目录名下的文件夹data里的,数据库就放在data里面,问题依然存在,再帮忙解决下吧回答12楼的:
    谢谢你
      

  12.   

    例子import Java.sql.*;
      
      public class AccessDB {
       String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
       String url = "jdbc:odbc:Driver={MicroSoft Access Driver *.mdb)};DBQ = Northwind.mdb";
       String user = "";
       String pwd = "";
       Connection conn;
       Statement stmt;
       ResultSet rs;
      
       public MyDB() {
        try {
         Class.forName(driver);
        } catch (Exception e) {
         System.out.println(e);
        }
       }
      
       //创建不可滚动的连接
       public void connect() {
        try {
         conn = DriverManager.getConnection(url,user,pwd);
         stmt = conn.createStatement();
        } catch (Exception e) {
         System.out.println(e);
        }
       }
       //创建可以滚动的连接
       public void connect2() {
        try {
         conn = DriverManager.getConnection(url,user,pwd);
         stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
        } catch (Exception e) {
         System.out.println(e);
        }
       }
      
       //关闭连接
       public void close() {
        try {
         if (stmt != null) {
          stmt.close();
         }
         if (conn != null) {
          conn.close();
         }
        } catch (Exception e) {
         System.out.println(e);
        }
       }
      
       //查询语句
       public ResultSet executeQuery(String sql) {
        try {
         if (stmt == null) {
          connect();
         }
         rs = stmt.executeQuery(sql);
        } catch (Exception e) {
         System.out.println(e);
        }
        return rs;
       }
      }
      

  13.   

    回答16楼的:
    你那个是jsp的还是java的,我看起来有点像java的 ,不是jsp数据库连接的啊,
      

  14.   

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); 
      

  15.   

    回答19楼的,
    如果改成Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); 的话会出现新的错误:type Exception reportmessage 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: 
    JSP FileName:/conn.jsp
    Java FileName:/C:/Program Files/Apache Software Foundation/Tomcat 5.5/work/Catalina/localhost/book//org/apache/jsp\index_jsp.javaAn error occurred at line: 2 in the jsp file: /conn.jsp
    Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )
    1: <%@page import="java.sql.*"%>
    2: <%String spath="data\data1.mdb";   //注意由网站根到文件的路径
    3: String dbpath = application.getRealPath(spath); //转化成物理路径
    4: //数据库连接字符串 
    5: String url ="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+dbpath; 
    Stacktrace:
    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:98)
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
    org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:435)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:298)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:277)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:265)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:302)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    note The full stack trace of the root cause is available in the Apache Tomcat/5.5.25 logs.
    还是有错误,请问各位还有帮点忙把它搞定下来吗
      

  16.   

    access  没有用过, 个人测试还是 喜欢用 MSSQL2000 
    具体你的是什么问题 我不清楚, 贴点自己连接数据库的代码给你参考下:
    <%@ page contentType="text/html;charset=gb2312"%>   
    <%@ page import="java.sql.*"%>
    <html>   
    <body>   
    <%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();   
    String url="jdbc:sqlserver://localhost:1433;DatabaseName=jsptest";
    //pubs为你的数据库的
    String user="sa";
    String password="776883";
    Connection conn= DriverManager.getConnection(url,user,password);   
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);   
    String sql="select * from user1 ";   
    ResultSet rs=stmt.executeQuery(sql);   
    while(rs.next()) {%>   
    您的第一个字段内容为:<%=rs.getString(1)%>   
    您的第二个字段内容为:<%=rs.getString(2)%>   
    <%}%>   
    <%out.print("数据库操作成功,恭喜你");%>   
    <%rs.close();   
    stmt.close();   
    conn.close();   
    %>   
    </body>   
    </html>这个是我测试数据库连接的 例子  
    驱动放在  项目下的  WEB-INF下的lib 目录 
    三个文件 名分别为 :
    msbase.jar
    mssqlserver.jar
    msutil.jar
      

  17.   

    我做出来了,谢谢上面所以人的回答,我测试用 sql server2000 因为没安装sql server2000 sp3 所以在连接时会出错,谢谢各位了
      

  18.   

    sql server2000 sp3 在哪里可以下载?