我用的软件是:
 j2sdk1.5,tomcat4.1.30 ,MS SQL Server2000个人版
tomcat服务器可以正常运行。但是涉及到连接数据库时就出现异常。
出现:
  数据库出现内部异常
  ODBC未发现数据源及驱动程序
请问这是什么原因呢?

解决方案 »

  1.   

    不就是SQL驱动吗?---jtds-0.6.jar 吧!
    我也安了,并且也把它放在tomcat\common\lib 下
    classpath中也加了它的路径
    但还不行呀?
      

  2.   

    我感觉你可能有以下两个方面的错误:
      第一,加载数据库的时候有异常:你可以看看自己的加载程序是否有错
      第二,你可能如楼上所说的是驱动没有装。
      第三,SQL写的不太正确。
      

  3.   

    //ODBC未发现数据源及驱动程序
    你的ODBC根本没配置
      

  4.   

    我是这样安的:
    第一步:----安装J2SDK:  到SUN官方站点(http://java.sun.com)下载J2SDK的安装文件:j2sdk-1_4_2_02-windows-i586-p.exe,下载之后安装好J2SDK;安装完之后,设置环境变量:我的电脑---属性---高级---环境变量;  选择---系统变量(S):
     
      设置JAVA_HOME环境变量:  单击---新建,在变量名中输入:JAVA_HOME  在变量值中输入:D:\yy\pro\j2sdk1.4.2  然后---确定,到此已经设置好JAVA_HOME环境变量。  设置CLASSPATH环境变量:  单击---新建,在变量名中输入:CLASSPATH  在变量值中输入:D:\yy\pro\j2sdk1.4.2\bin;.;D:\yy\pro\j2sdk1.4.2\lib;D:\yy\pro\j2sdk1.4.2\lib\dt.jar;D:\yy\pro\j2sdk1.4.2\lib\tools.jar  (中间的点号“.”和分号“;”必不可少。)  然后---确定,到此已经设置好CLASSPATH环境变量。  设置PATH环境变量:  单击---新建,在变量名中输入:PATH  在变量值中输入:D:\yy\pro\j2sdk1.4.2;.;D:\yy\pro\j2sdk1.4.2\bin  (中间的点号“.”和分号“;”必不可少。)  然后---确定,到此已经设置好JAVA_HOME环境变量。  三个环境变量设置好后,写一个简单的java程序来测试J2SDK是否已安装成功:  在D:\下新建一个目录test;然后写如下程序: 
       public class Test { 
      public static void main(String args[]) { 
        System.out.println("This is a test program."); 
       } 
      }   将上面的这段程序保存为文件名为Test.java的文件,保存在目录D:\test下。  然后打开命令提示符窗口,cd到你的test目录,然后键入下面的命令      javac Test.java 
        java Test   此时如果看到打印出来This is a test program.的话说明安装成功了,  如果没有打印出这句话,你需要仔细检查一下你的配置情况。   如果上面的J2SDK安装成功的话,接下来继续安装Tomcat:  第二步:----安装Tomcat:   到tomcat官方站点(http://www.apache.org/dist/jakarta/tomcat-4/)下载tomcat:   jakarta-tomcat-4.1.30.exe,下载之后安装。(比如安装在D:\yy\pro\Tomcat下。)   安装完之后,设置环境变量:我的电脑---属性---高级---环境变量;   选择---系统变量(S):   设置CATALINA_HOME环境变量:   单击---新建,在变量名中输入:CATALINA_HOME   在变量值中输入:D:\yy\pro\Tomcat   然后---确定,到此已经设置好CATALINA_HOME环境变量。   设置CATALINA_BASE环境变量:   单击---新建,在变量名中输入:CATALINA_BASE   在变量值中输入:D:\yy\pro\Tomcat   然后---确定,到此已经设置好CATALINA_BASE环境变量。   然后修改环境变量中的CLASSPATH,把Tomat安装目录下的common\lib下的servlet.jar追加到CLASSPATH中去,      接着可以启动tomcat,在IE中访问http://localhost:8080,如果看到tomcat的欢迎页面的话说明安装成功了。
     我安完,tomcat正常运行了。
     我用的驱动程序是jtds-0.6.jar把它放置在tomcat\common\lib下 classpath中也加了它的路径
    但是还是异常。
     可以帮我吗?好心人?
      

  5.   

    不,我也设了ODBC 
    也添加了数据源
    数据库没问题的。
      

  6.   

    是不是 jdk 和tomcat不兼容呀
    我用的是jdk 1.46 tomcat 5.0没有问题
      

  7.   

    当我试着连接SQL时出现以下错误:
    HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: /mytest_db.jsp(0,3) Invalid directive
    at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:94)
    at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:428)
    at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:126)
    at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:383)
    at org.apache.jasper.compiler.Parser.parseElements(Parser.java:795)
    at org.apache.jasper.compiler.Parser.parse(Parser.java:122)
    at org.apache.jasper.compiler.ParserController.parse(ParserController.java:199)
    at org.apache.jasper.compiler.ParserController.parse(ParserController.java:153)
    at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:227)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:369)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:473)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:190)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:833)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:711)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:687)
    at java.lang.Thread.run(Thread.java:534)--------------------------------------------------------------------------------Apache Tomcat/4.1.30-LE-jdk14这是浏览器中出现的。
    哪位大侠帮我一下呢?
      

  8.   

    这是连接SQL的Bean
    package test;
    import java.sql.*;
    public class mytest_db
    {
    String sDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
    String sConnStr="jdbc:odbc:pubs";
    Connection conn=null;
    ResultSet rs=null; public mytest_db() {
    try{
    Class.forName(sDBDriver);
    }
    catch(java.lang.ClassNotFoundException e) {
    System.err.println("Class mytest_db not found!"+e.getMessage());
    }
    }
    public ResultSet executeQuery(String sql) {
    rs=null;
    try
    {
    conn=DriverManager.getConnection(sConnStr,"sa","");
    Statement stmt=conn.createStatement();
    rs=stmt.executeQuery(sql);
    }
    catch (SQLException ex)
    {
    System.err.println("aq.executeQuery:"+ex.getMessage());
    }
    return rs;
    }
    public ResultSet executeUpdate(String sql) {
    rs=null;
    try 
    {
    conn=DriverManager.getConnection(sConnStr,"sa","");           
    Statement stmt=conn.createStatement();
    rs=stmt.executeQuery(sql);
    }
    catch (SQLException ex)
    {
    System.err.println("aq.executeQuery:"+ex.getMessage());
    }
    return rs;
    }
    }
    测试的Jsp文件是:
    <%@ page import="java.sql.*" contentType="text/html;charset=gb2312" %>
    <jsp:useBean id="test" scope="page" class="mytest_db"/>
      <html>
      <body>
      <%
          
       String sql="select job_id,job_desc from jobs";
       ResultSet rs=test.executeQuery(sql);
       while(rs.next()) { %>
        您的第一个字段内容为:<%=rs.getString(1)%><br>
        您的第二个字段内容为:<%=rs.getString(2)%><br>
      <% } %>
      <% out.print("数据库操作成功,恭喜你"); %>
      <% rs.close();
      
      %>
      </body>
      </html> 
    请赐教!!!
      

  9.   

    打包SQLSERVER2000SP3,你的操作系统是什么,2000的话打上WIN2000的SP4
      

  10.   

    改为
    <jsp:useBean id="test" scope="page" class="test.mytest_db"/>