本人使用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>
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>
楼主你的这句话有问题
lookup("java:comp/env/jdbc/MyDatabase");
"java:/comp" 这个地方没有"/"
改一下试试吧,如果对请加分哦,小弟是菜鸟需要的,谢谢
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)
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.