Tomcat 配置的数据源,测试连接数据库报告类转换错误。
tomcat配置的数据源如下:<Resourcename="jdbc/TestDB"auth="Container"type="javax.sql.DataSource"...
tomcat 配置的数据源如下:
<Resource name="jdbc/TestDB"
auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mydb" />
写的测试类如下:
package com.telenav.Brant;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
public class ConnectDB {
public ConnectDB(){}
public static void testDB(){
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/TestDB");
Connection con = (Connection) ds.getConnection();
Statement stmt = (Statement) con.createStatement();
ResultSet rs = stmt.executeQuery("select * from user");
while(rs.next()){
System.out.println(rs.getString(2));
}
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
报错如下:
2011-6-19 15:08:28 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper cannot be cast to com.mysql.jdbc.Connection
at com.telenav.Brant.ConnectDB.testDB(ConnectDB.java:21)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:81)
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
我估计是import进来的类不对,可能是引入的包比较少,所以eclipse自动提示的类不匹配,有没有高手告诉我使用tomcat数据源配置连接数据库,在类中都要引入什么包中的什么类? 展开
<Resource name="jdbc/TestDB"
auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mydb" />
写的测试类如下:
package com.telenav.Brant;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
public class ConnectDB {
public ConnectDB(){}
public static void testDB(){
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/TestDB");
Connection con = (Connection) ds.getConnection();
Statement stmt = (Statement) con.createStatement();
ResultSet rs = stmt.executeQuery("select * from user");
while(rs.next()){
System.out.println(rs.getString(2));
}
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
报错如下:
2011-6-19 15:08:28 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper cannot be cast to com.mysql.jdbc.Connection
at com.telenav.Brant.ConnectDB.testDB(ConnectDB.java:21)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:81)
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
我估计是import进来的类不对,可能是引入的包比较少,所以eclipse自动提示的类不匹配,有没有高手告诉我使用tomcat数据源配置连接数据库,在类中都要引入什么包中的什么类? 展开
5个回答
展开全部
Connection con = (Connection) ds.getConnection();
Connection 应该是 java.sql.Connection. 但是你用的是: com.mysql.jdbc.Connection
tomcat的数据源的PoolGuardConnectionWrapper 实现的是 java.sql.Connection. 你把它转换为 com.mysql.jdbc.Connection肯定出错
Statement 必须用 java.sql.Statement
Connection 应该是 java.sql.Connection. 但是你用的是: com.mysql.jdbc.Connection
tomcat的数据源的PoolGuardConnectionWrapper 实现的是 java.sql.Connection. 你把它转换为 com.mysql.jdbc.Connection肯定出错
Statement 必须用 java.sql.Statement
展开全部
文件夹:build-存放编译后的class文件
nbproject-存放项目的具体配置文件
src-java源代码存放文件夹
test-JUnit测试文件存放位置
Build.xml构建描述文件,因为Netbeans的编译打包是基于ant的,build就是ant实现自动编译打包的描述文件。
manifest.mf是打包的时候需要的一个清单文件,是对打包后的jar包中的文件的一个描述下文件。
original.java,.netbeans_automatic_build,这两个文件不知道你用的什么Netbeans版本,在我的版本中并未生成此文件。
build-impl.xml是对Build.xml文件的具体描述,Build.xml其实并未实现具体的ant构建脚本,具体是在该文件中实现的,如果你看过build.xml的源代码,就会发现一句<import file="nbproject/build-impl.xml"/>,这你就知道是什么意思了。
nbproject-存放项目的具体配置文件
src-java源代码存放文件夹
test-JUnit测试文件存放位置
Build.xml构建描述文件,因为Netbeans的编译打包是基于ant的,build就是ant实现自动编译打包的描述文件。
manifest.mf是打包的时候需要的一个清单文件,是对打包后的jar包中的文件的一个描述下文件。
original.java,.netbeans_automatic_build,这两个文件不知道你用的什么Netbeans版本,在我的版本中并未生成此文件。
build-impl.xml是对Build.xml文件的具体描述,Build.xml其实并未实现具体的ant构建脚本,具体是在该文件中实现的,如果你看过build.xml的源代码,就会发现一句<import file="nbproject/build-impl.xml"/>,这你就知道是什么意思了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你需要把你的mysql数据库的jar“mysql-connector-java-3.2.0-alpha-bin.jar”拷到tomcat根目录下的common\lib下面去
追问
我copy到E:\Program Files\apache-tomcat-6.0.30\lib下面了,而且tomcat下面也没common目录啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你试下注册驱动的时候不要用Class.forName();
换一种方式。好像是DirverManager什么的 记不太清 你试试吧
换一种方式。好像是DirverManager什么的 记不太清 你试试吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
连接包导出项目lib下了吗?发布的时候一定要导入呢
追问
mysql-connector-java-5.1.7-bin.jar包已经加入到classpath下了,现在是在develop,还没发布呢,报这个错。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询