本人使用Tomcat6.0+MSSQL Server2000+MyEclipse7.0配置数据库连接池,代码应该没写错!数据库也能连接成功,不知道为什么还报错:java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'MyDatabase' 无效
contexet.xml文件代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/MyDatabase" auth="Container" type="javax.sql.DataSource"
maxActive="20" maxIdle="10" maxWait="1000" logAbandoned="true"
username="sa" password="0702020128" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;DatebaseName=MyDatabase" />
</Context>
web.xml文件代码如下:<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <resource-ref>       <res-ref-name>jdbc/MyDatabase</res-ref-name>       <res-type>javax.sql.DataSource</res-type>       <res-auth>Container</res-auth>   </resource-ref>   
</web-app>测试文件index.jsp代码如下:<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import = "java.sql.*" %> 
<%@ page import = "javax.sql.*"%> 
<%@ page import = "javax.naming.*"%> 
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
  </head>
  
  <body>
<% 
  Connection conn = null;
  
  Statement stmt = null;
  
  ResultSet rs = null;
     
try{
      Context context = new InitialContext();       DataSource dataSource  =(DataSource)context.lookup("java:/comp/env/jdbc/MyDatabase");       conn = dataSource.getConnection();    stmt = conn.createStatement();
  
  rs = stmt.executeQuery("select * from MyDatabase");
  
      System.out.println("rs:" + rs);
      
  while(rs.next()){
  
  out.println("学号" + rs.getString("ID"));
  
  out.println("性别" + rs.getString("Sex"));
  
  out.println("姓名" + rs.getString("Name"));
  
  out.println("学校" + rs.getString("School"));
  
  out.println("专业" + rs.getString("PROINF"));
  
   }
 

}catch(SQLException e){
 
 e.printStackTrace();
 }
    %>
     
    <%
    if (rs != null) {
     rs.close();
     rs = null;
    }
    
    if (stmt != null) {
     stmt.close();
     stmt = null;
    }    if (conn != null) {
     conn.close();
     conn = null;
    }
 %>
     </body>
</html>

解决方案 »

  1.   

    " DataSource dataSource  =(DataSource)context.lookup("java:/comp/env/jdbc/MyDatabase"); "
    楼主你的这句话有问题
    lookup("java:comp/env/jdbc/MyDatabase");
    "java:/comp"  这个地方没有"/"
    改一下试试吧,如果对请加分哦,小弟是菜鸟需要的,谢谢
      

  2.   

    非常感谢你的回答!问题还是解决不了...
    2009-5-7 22:55:44 org.apache.catalina.core.AprLifecycleListener init
    信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.6.0\bin;D:\ApacheTomcat 6.0\bin
    2009-5-7 22:55:45 org.apache.coyote.http11.Http11Protocol init
    信息: Initializing Coyote HTTP/1.1 on http-8080
    2009-5-7 22:55:45 org.apache.catalina.startup.Catalina load
    信息: Initialization processed in 2788 ms
    2009-5-7 22:55:45 org.apache.catalina.core.StandardService start
    信息: Starting service Catalina
    2009-5-7 22:55:45 org.apache.catalina.core.StandardEngine start
    信息: Starting Servlet Engine: Apache Tomcat/6.0.18
    2009-5-7 22:55:48 org.apache.catalina.core.ApplicationContext log
    信息: ContextListener: contextInitialized()
    2009-5-7 22:55:48 org.apache.catalina.core.ApplicationContext log
    信息: SessionListener: contextInitialized()
    2009-5-7 22:55:49 org.apache.coyote.http11.Http11Protocol start
    信息: Starting Coyote HTTP/1.1 on http-8080
    2009-5-7 22:55:50 org.apache.jk.common.ChannelSocket init
    信息: JK: ajp13 listening on /0.0.0.0:8009
    2009-5-7 22:55:50 org.apache.jk.server.JkMain start
    信息: Jk running ID=0 time=0/78  config=null
    2009-5-7 22:55:50 org.apache.catalina.startup.Catalina start
    信息: Server startup in 4503 ms
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'MyDatabase' 无效。
    at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSExecuteRequest.processReplyToken(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
    at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)
    at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)
    at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)
    at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
    at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
    at com.microsoft.jdbc.base.BaseStatement.executeQuery(Unknown Source)
    at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
    at org.apache.jsp.index_jsp._jspService(index_jsp.java:105)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
      

  3.   

    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: javax.servlet.ServletException: javax.naming.NameNotFoundException: Name MyDatabase is not bound in this Context
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    root cause javax.servlet.ServletException: javax.naming.NameNotFoundException: Name MyDatabase is not bound in this Context
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:852)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:158)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    root cause javax.naming.NameNotFoundException: Name MyDatabase is not bound in this Context
    org.apache.naming.NamingContext.lookup(NamingContext.java:770)
    org.apache.naming.NamingContext.lookup(NamingContext.java:140)
    org.apache.naming.NamingContext.lookup(NamingContext.java:781)
    org.apache.naming.NamingContext.lookup(NamingContext.java:153)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:99)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
      

  4.   

    我靠 问题解决了 说下怎么解决的撒 google累死找到个跟我一样的exception你却不说